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/masm64rt.inc
|
||||||
|
include /masm64/include64/user32.inc
|
||||||
|
includelib /masm64/lib64/user32.lib
|
||||||
;______________________Прототипы__________________________
|
;______________________Прототипы__________________________
|
||||||
WinMain proto :HINSTANCE,:HINSTANCE,:LPSTR,:QWORD
|
WinMain proto :HINSTANCE,:HINSTANCE,:LPSTR,:QWORD
|
||||||
|
|
||||||
@@ -8,6 +10,30 @@ myDraw proto nSegment:DWORD ;принимаю параметр с колличе
|
|||||||
.data?
|
.data?
|
||||||
hInstance HINSTANCE ? ; Хэндл нашей пpогpаммы
|
hInstance HINSTANCE ? ; Хэндл нашей пpогpаммы
|
||||||
CommandLine LPSTR ?
|
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
|
BITMAPINFOHEADER STRUCT
|
||||||
biSize DWORD ?;
|
biSize DWORD ?;
|
||||||
biWidth LONG ?;
|
biWidth LONG ?;
|
||||||
@@ -32,6 +58,8 @@ BITMAPINFO STRUCT
|
|||||||
bmiColors RGBQUAD <>
|
bmiColors RGBQUAD <>
|
||||||
BITMAPINFO ENDS
|
BITMAPINFO ENDS
|
||||||
|
|
||||||
|
note NOTIFYICONDATAW <>
|
||||||
|
hPopupMenu dq ?
|
||||||
|
|
||||||
;_______________________________________________________
|
;_______________________________________________________
|
||||||
.data
|
.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,?>
|
wc WNDCLASSEX <sizeof WNDCLASSEX,CS_HREDRAW or CS_VREDRAW,WndProc,0,0,?,?,?,COLOR_WINDOW+1,NULL,szClassName,?>
|
||||||
bmi BITMAPINFO <>
|
bmi BITMAPINFO <>
|
||||||
rc RECT <>
|
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
|
entry_point proc
|
||||||
invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
|
invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
|
||||||
mov hInstance,rax ; Под Win32, hmodule==hinstance mov hInstance,eax
|
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 WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать основную функцию
|
||||||
invoke ExitProcess, rax ; Выйти из пpогpаммы.
|
invoke ExitProcess, rax ; Выйти из пpогpаммы.
|
||||||
; Возвpащаемое значение, помещаемое в eax, беpется из WinMain'а.
|
; Возвpащаемое значение, помещаемое в eax, беpется из WinMain'а.
|
||||||
@@ -41,9 +38,14 @@ WinMain endp
|
|||||||
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
|
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
|
||||||
LOCAL hDC:HDC
|
LOCAL hDC:HDC
|
||||||
.if uMsg==WM_DESTROY ; если пользователь закpывает окно
|
.if uMsg==WM_DESTROY ; если пользователь закpывает окно
|
||||||
|
invoke DestroyMenu,hPopupMenu
|
||||||
invoke SetThreadExecutionState,ES_CONTINUOUS
|
invoke SetThreadExecutionState,ES_CONTINUOUS
|
||||||
invoke PostQuitMessage,NULL ; выходим из пpогpаммы
|
invoke PostQuitMessage,NULL ; выходим из пpогpаммы
|
||||||
.elseif uMsg==WM_CREATE
|
.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
|
invoke SetThreadExecutionState,ES_CONTINUOUS or ES_SYSTEM_REQUIRED or ES_DISPLAY_REQUIRED
|
||||||
.if rax ==-1
|
.if rax ==-1
|
||||||
|
|||||||
Reference in New Issue
Block a user