From 5571eea24a0fd3143f6ac292ef14c1955213693a Mon Sep 17 00:00:00 2001 From: Stanislav N Mikhailov Date: Sun, 14 Dec 2025 22:49:59 +0300 Subject: [PATCH] Add popup menu implementation (not displayed yet) --- Mandelbrot.exe | Bin 4096 -> 4096 bytes include/template.inc | 33 +++++++++++++++++++++++++++++++++ src/Mandelbrot.asm | 8 +++++--- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Mandelbrot.exe b/Mandelbrot.exe index 8f57733daabbf5d90880128a53be1c64f72e4e39..cb6d7d694c6c739e7e2b8365a676ef26e901720d 100644 GIT binary patch delta 1331 zcmb_cQAkr!82-=PojRQsxh5udH-}n^nPyNHxm22$$P3$=s}7)TNDs+bC%hY> zZ(xHoT}BD$QAro-4n*nz)eIo^vxQCYCRQko$pE>$TUVmTm$8_2Pikq<(-%bFGJneo z*$@7U73%cTxJ~zg#q~SOzh(kBhovklLd0Yun43mBG(@CiWc71XMr13gI5;EoiupBn z>E+OZ3~)!Pz|lE3g&}oT2tYBfYYAlv4NDG!ZH`&ZVW3ddw78dMEs!RBQS)8Y8luuY z1Y95B4aREiatM^S^~8#D;*+@cI+(MoO_rwD8q*|ZE+|&2=G1$`Q@G-3R9kqhR16Gka01w#S~b> z4Uy%THRt~vkmH{Zh<6)p{IT&!v7@WY<7;d5_<9{!=Sfey*XMG3ee~aent;b0^tk+8 zycj1hmp19b&`-k|IX_}c^SPW&G&jwky-=G~%*RmUmNf{b9^M>!B>up83j5J5bNE69vt^;(9SV@L{B=zJ4B|^R6Bl)Ak z2cr3`)0VxXKPv&0v}nNsy7a{~I#y7!728afUt%=~X2nf(UCT>l=r&66p=4Kd=@l+m zNue40KEqf#RHdXZI)mvBIhYQ4bpMuwF+NX8@RS7}43W0c)g4~v==8u1m@kQpmX z*2LHbvR$2;8Dl4Nk`&jTU<`b?DaOp^AU6P1A@=qU4Y4q*Qy6dE;4nU+iXR~hJjVm^ z$eL^a|M?-VfBq1vmAT6UgYkGc5edc;18wwKS*xvm;94xv9gZcEKpi#@4cYQ^L}-~V SpCU6 + 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 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 diff --git a/src/Mandelbrot.asm b/src/Mandelbrot.asm index 5bdfde6..5417aa5 100644 --- a/src/Mandelbrot.asm +++ b/src/Mandelbrot.asm @@ -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