Перешёл на masm

This commit is contained in:
Стас Михайлов WindowsDesktop
2021-01-03 17:49:52 +03:00
parent e48e940485
commit ccfb9de3e7
4 changed files with 114 additions and 16 deletions
+34 -16
View File
@@ -13,10 +13,10 @@ Start:
Invoke WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT
Invoke ExitProcess,EAX
WinMain Proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
Local wc:WNDCLASSEX
Local wc:WNDCLASSEXW
Local msg:MSG
Local hwnd:HWND
MOV wc.cbSize, SizeOf WNDCLASSEX
MOV wc.cbSize, SizeOf WNDCLASSEXW
MOV wc.style, CS_HREDRAW or CS_VREDRAW
MOV wc.lpfnWndProc, Offset WndProc
MOV wc.cbClsExtra,NULL
@@ -31,10 +31,13 @@ Local hwnd:HWND
MOV wc.hIconSm,0
Invoke LoadCursor, NULL, IDC_ARROW
MOV wc.hCursor,EAX
Invoke RegisterClassEx, addr wc
Invoke LoadMenu, hInst, Offset MenuName
Invoke RegisterClassExW, addr wc
.if eax==NULL
Invoke MessageBox, NULL,ADDR szHelpAbout, Offset szAppName, MB_OK
.endif
Invoke LoadMenuW, hInst, Offset MenuName
MOV hMenu,EAX
Invoke CreateWindowEx, WS_EX_CLIENTEDGE, ADDR ClassName, ADDR szAppName,\
Invoke CreateWindowExW, WS_EX_CLIENTEDGE, Offset ClassName, Offset szAppName,\
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,\
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, hMenu,\
hInst, NULL
@@ -42,10 +45,10 @@ Local hwnd:HWND
Invoke ShowWindow, hwnd, SW_SHOWNORMAL
Invoke UpdateWindow, hwnd
.While TRUE
Invoke GetMessage, ADDR msg, NULL, 0, 0
Invoke GetMessageW, ADDR msg, NULL, 0, 0
.Break .If (!EAX)
Invoke TranslateMessage, ADDR msg
Invoke DispatchMessage, ADDR msg
Invoke DispatchMessageW, ADDR msg
.EndW
MOV EAX, msg.wParam
RET
@@ -55,15 +58,30 @@ WndProc Proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
Invoke PostQuitMessage, NULL
.ElseIf uMsg==WM_COMMAND
MOV EAX,wParam
.If AX==IDM_FILE_NEW
Invoke MessageBox, NULL, ADDR szFileNew, Offset szAppName, MB_OK
.ElseIf AX==IDM_FILE_OPEN
Invoke MessageBox, NULL, ADDR szFileOpen, Offset szAppName, MB_OK
.ElseIf AX==IDM_HELP_ABOUT
Invoke MessageBox, NULL,ADDR szHelpAbout, Offset szAppName, MB_OK
.Else
Invoke DestroyWindow, hWnd
.EndIf
.if lParam==0
.If AX==IDM_FILE_NEW
Invoke MessageBox, NULL, ADDR szFileNew, Offset szAppName, MB_OK
.ElseIf AX==IDM_FILE_OPEN
Invoke MessageBox, NULL, ADDR szFileOpen, Offset szAppName, MB_OK
.ElseIf AX==IDM_HELP_ABOUT
Invoke MessageBox, NULL,ADDR szHelpAbout, Offset szAppName, MB_OK
.Else
Invoke DestroyWindow, hWnd
.EndIf
.ELSE
.IF ax==ButtonID ;Если нажата кнопка, то
shr eax,16 ;сдвигаем EAX на 4 бита вправо, чтобы поместить в AX значение верхнего слова wParam
.IF ax==BN_CLICKED
invoke MessageBoxExW, hWnd, ADDR ButtonText, ADDR ButtonText,MB_OK,MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
.ENDIF
.EndIf
.ENDIF
.ELSEIF uMsg==WM_CREATE
invoke CreateWindowExW,NULL, Offset ButtonClassName,Offset ButtonText,\
WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,\
75,70,140,25,hWnd,ButtonID,hInstance,NULL
mov hwndButton,eax
.Else
Invoke DefWindowProc, hWnd, uMsg, wParam, lParam
RET