Создать окно с четырехуровневым меню. Один из пунктов меню завершает приложение, другой - вызывает программу Калькулятор.
проблема с вызовом калькулятора, как это осуществить?
| Код |
.386 .model flat,stdcall option casemap:none WinMain proto :DWORD,:DWORD,:DWORD,:DWORD include windows.inc include gdi32.inc include user32.inc include kernel32.inc includelib user32.lib includelib gdi32.lib includelib kernel32.lib
.data ClassName db "SimpleWinClass",0 AppName db "Simple Window",0 MenuName db "FirstMenu",0 Test_string db "author: Hopelessness, TR-61",0 tst DWORD 100
.data? hInstance HINSTANCE ? CommandLine LPSTR ? hMenu HMENU ?
.const IDM_ABOUT equ 1 IDM_CALC equ 2 IDM_EXIT equ 4
.code start: invoke GetModuleHandle, NULL ;вызов ф-ии mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbClsExtra,NULL mov wc.cbWndExtra,NULL push hInst pop wc.hInstance invoke CreateSolidBrush, 00FF80FFh mov wc.hbrBackground,eax mov wc.lpszMenuName,NULL mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,0 invoke LoadCursor,NULL,IDC_NO mov wc.hCursor,eax invoke RegisterClassEx, addr wc invoke LoadMenu, hInst, OFFSET MenuName mov hMenu,eax INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\ WS_OVERLAPPEDWINDOW,100,\ 100,400,300,NULL,hMenu,\ hInst,NULL mov hwnd,eax INVOKE ShowWindow, hwnd,SW_SHOWNORMAL INVOKE UpdateWindow, hwnd .WHILE TRUE INVOKE GetMessage, ADDR msg,NULL,0,0 .BREAK .IF (!eax) INVOKE DispatchMessage, ADDR msg .ENDW mov eax,msg.wParam ret WinMain endp
WndProc proc hWin:DWORD, hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg == WM_CLOSE invoke ShowWindow,hWin,SW_MINIMIZE .ELSEIF uMsg==WM_COMMAND mov eax,wParam .IF ax==IDM_ABOUT invoke MessageBox,NULL,ADDR Test_string,OFFSET AppName,MB_OK .ELSEIF ax==IDM_CALC ;?????????
.ELSEIF ax==IDM_EXIT invoke EndDialog,hWin,0 .ENDIF .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end start
|
|