mirror of
https://github.com/stasenso/Puer.git
synced 2026-06-26 21:32:42 +03:00
Add popup menu implementation (not displayed yet)
This commit is contained in:
Binary file not shown.
@@ -1,4 +1,6 @@
|
||||
include /masm64/include64/masm64rt.inc
|
||||
include /masm64/include64/user32.inc
|
||||
includelib /masm64/lib64/user32.lib
|
||||
;______________________Прототипы__________________________
|
||||
WinMain proto :HINSTANCE,:HINSTANCE,:LPSTR,:QWORD
|
||||
|
||||
@@ -8,6 +10,30 @@ myDraw proto nSegment:DWORD ;принимаю параметр с колличе
|
||||
.data?
|
||||
hInstance HINSTANCE ? ; Хэндл нашей пpогpаммы
|
||||
CommandLine LPSTR ?
|
||||
|
||||
|
||||
NOTIFYICONDATAW STRUCT
|
||||
cbSize DWORD ?
|
||||
hwnd DWORD ?
|
||||
uID DWORD ?
|
||||
uFlags DWORD ?
|
||||
uCallbackMessage DWORD ?
|
||||
hIcon DWORD ?
|
||||
szTip WORD 64 dup (?)
|
||||
WORD 64 dup (?)
|
||||
dwState DWORD ?
|
||||
dwStateMask DWORD ?
|
||||
szInfo WORD 256 dup(?)
|
||||
union DUMMYUNIONNAME
|
||||
uTimeout DWORD ?
|
||||
uVersion DWORD ?
|
||||
ends
|
||||
szInfoTitle WORD 64 dup(?)
|
||||
dwInfoFlags DWORD ?
|
||||
guidItem GUID <>
|
||||
hBalloonIcon DWORD ?
|
||||
NOTIFYICONDATAW ENDS
|
||||
|
||||
BITMAPINFOHEADER STRUCT
|
||||
biSize DWORD ?;
|
||||
biWidth LONG ?;
|
||||
@@ -32,6 +58,8 @@ BITMAPINFO STRUCT
|
||||
bmiColors RGBQUAD <>
|
||||
BITMAPINFO ENDS
|
||||
|
||||
note NOTIFYICONDATAW <>
|
||||
hPopupMenu dq ?
|
||||
|
||||
;_______________________________________________________
|
||||
.data
|
||||
@@ -42,6 +70,11 @@ IDT_UPDTIMER EQU 111
|
||||
wc WNDCLASSEX <sizeof WNDCLASSEX,CS_HREDRAW or CS_VREDRAW,WndProc,0,0,?,?,?,COLOR_WINDOW+1,NULL,szClassName,?>
|
||||
bmi BITMAPINFO <>
|
||||
rc RECT <>
|
||||
RestoreString db "&Restore",0
|
||||
ExitString db "E&xit Program",0
|
||||
|
||||
IDI_TRAY equ 0
|
||||
IDM_RESTORE equ 1000
|
||||
|
||||
IDM_EXIT equ 1010
|
||||
|
||||
|
||||
+5
-3
@@ -3,9 +3,6 @@ include template.inc
|
||||
entry_point proc
|
||||
invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
|
||||
mov hInstance,rax ; Под Win32, hmodule==hinstance mov hInstance,eax
|
||||
invoke GetCommandLine ; Взять командную стpоку. Вы не обязаны
|
||||
;вызывать эту функцию ЕСЛИ ваша пpогpамма не обpабатывает командную стpоку.
|
||||
mov CommandLine,rax
|
||||
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать основную функцию
|
||||
invoke ExitProcess, rax ; Выйти из пpогpаммы.
|
||||
; Возвpащаемое значение, помещаемое в eax, беpется из WinMain'а.
|
||||
@@ -41,9 +38,14 @@ WinMain endp
|
||||
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
|
||||
LOCAL hDC:HDC
|
||||
.if uMsg==WM_DESTROY ; если пользователь закpывает окно
|
||||
invoke DestroyMenu,hPopupMenu
|
||||
invoke SetThreadExecutionState,ES_CONTINUOUS
|
||||
invoke PostQuitMessage,NULL ; выходим из пpогpаммы
|
||||
.elseif uMsg==WM_CREATE
|
||||
invoke CreatePopupMenu
|
||||
mov hPopupMenu,rax ;Создаём pop-up меню для взаимодействия через трей
|
||||
invoke AppendMenuA,hPopupMenu,MF_STRING,IDM_RESTORE,addr RestoreString
|
||||
invoke AppendMenuA,hPopupMenu,MF_STRING,IDM_EXIT,addr ExitString
|
||||
;Запрещаем переход в сон и отключение дисплея
|
||||
invoke SetThreadExecutionState,ES_CONTINUOUS or ES_SYSTEM_REQUIRED or ES_DISPLAY_REQUIRED
|
||||
.if rax ==-1
|
||||
|
||||
Reference in New Issue
Block a user