|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 2, 2004 11:28:26 Как можно рисовать поверх всех окон, включая OPENGL/DIRECTX игры? Пробовал находить DC окон и копировать в него, но рисуется только черный прямоугольник. |
|
|
Дата: Апр 2, 2004 14:50:55 покажи исходник (или) часть, где ты рисуешь прямоугольник. возможно там что-то не так, в результате ты и видишь лишь прямоугольник. |
|
|
Дата: Апр 2, 2004 19:46:29 ;Это только пример, рисую я в определенные окна. Это не очень хороший способ (к тому же неработающий). Лучше, если само окно будет выше всех. .386 .model flat, stdcall option casemap :none ;ПРОТОТИПЫ ###################################################################### ################################# INCLUDE \lab\masm\include\windows.inc INCLUDE \lab\masm\include\kernel32.inc INCLUDE \lab\masm\include\user32.inc INCLUDE \lab\masm\include\gdi32.inc INCLUDELIB \lab\masm\lib\kernel32.lib INCLUDELIB \lab\masm\lib\user32.lib INCLUDELIB \lab\masm\lib\gdi32.lib ;СЕКЦИЯ НЕОПРЕД ДАННЫХ ###################################################################### ##################### .DATA? hwnd HWND ? TopHWND HWND ? TopDC HDC ? msg MSG <> timer_handle HWND ? hFont dd ? hOld dd ? hWdc HDC ? hDC dd ? ps PAINTSTRUCT <> lf LOGFONT <> ;СЕКЦИЯ ДАННЫХ ###################################################################### ############################# .DATA szCount db " ", 0 count db 0 ;СТРУКТУРА WNDCLASSEX ###################################################################### ###################### cbSize dd 12*4 style dd CS_HREDRAW or CS_VREDRAW lpfnWndProc dd OFFSET WndProc cbClsExtra dd NULL cbWndExtra dd NULL hInstance dd 400000h hIcon dd NULL hCursor dd 65553 hbrBackground dd COLOR_WINDOWFRAME lpszMenuName dd NULL lpszClassName dd OFFSET szClassName hIconSm dd NULL ;СЕКЦИЯ КОНСТАНТ ###################################################################### ########################### .CONST FontName db "MS Sans Serif", 0 FormatTMSH db "%lu ", 0 szClassName db "Demo Class", 0 szAppName db "Demo APP", 0 timer_num equ 10 BUTTONCLASS db "BUTTON", 0 ;СЕКЦИЯ КОДА ###################################################################### ############################### .CODE start: invoke RegisterClassEx, ADDR cbSize invoke CreateWindowEx, 000088h, ADDR szClassName , ADDR szAppName , WS_POPUP or WS_CLIPCHILDREN, \ 100, 100 , 45 , 12 , NULL , NULL , hInstance , NULL mov hwnd, eax mov eax, 1000 invoke SetTimer, hwnd, timer_num, eax, NULL mov timer_handle, eax invoke ShowWindow, hwnd, SW_NORMAL invoke UpdateWindow, hwnd invoke SetFocus, hwnd StartLoop: invoke GetMessage, ADDR msg, NULL, NULL, NULL or eax, eax jz ExitLoop invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg jmp StartLoop NoMsg: jmp StartLoop ExitLoop: invoke ExitProcess, NULL ret ;ПРОЦЕДУРА ОБРАБОТКИ СООБЩЕНИЙ ###################################################################### ############# WndProc proc hWnd:HWND , uMsg:UINT, wParam:WPARAM, lParam:LPARAM ;##################################################################### ############################################ cmp uMsg, WM_CLOSE je wmClose cmp uMsg, WM_PAINT je wmPaint cmp uMsg, WM_TIMER je wmTimer cmp uMsg, WM_MOUSEMOVE je wmMousemove invoke DefWindowProc, hWnd, uMsg, wParam, lParam ret ;===================================================================== ============================================ wmPaint: invoke BeginPaint, hWnd, ADDR ps mov hWdc, eax invoke lstrcpy, addr lf.lfFaceName, addr FontName mov lf.lfHeight, -10 mov lf.lfWeight, 400 invoke CreateFontIndirect, addr lf mov hFont, eax invoke SelectObject, hWdc, hFont mov hOld, eax invoke TextOut, hWdc, 5, -1, ADDR szCount, 4 invoke SelectObject, hWdc, hOld invoke DeleteObject, hFont invoke GetTopWindow, NULL mov TopHWND, eax invoke GetWindowDC, TopHWND mov TopDC, eax invoke GetStockObject, BLACK_BRUSH invoke DrawState, TopDC, eax, NULL, addr szCount, 0, 0, 0, 45, 12, DSS_NORMAL + DST_TEXT invoke EndPaint, hWnd, ADDR ps xor eax, eax ret ;===================================================================== ============================================ wmMousemove: cmp wParam, MK_LBUTTON jne noBut invoke SendMessageA, hWnd, WM_NCLBUTTONDOWN, HTCAPTION, NULL noBut: ret ;===================================================================== ============================================ wmTimer: ; invoke BringWindowToTop, hWnd invoke ShowWindow, hWnd, SW_SHOW invoke wsprintf, ADDR szCount, ADDR FormatTMSH, count inc count invoke InvalidateRect, hWnd,NULL,TRUE ret ;===================================================================== ============================================ wmClose: invoke DeleteDC, hWdc invoke PostQuitMessage,NULL ret ;===================================================================== ============================================ WndProc endp ;===================================================================== ============================================ end start |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.052 |