📄 winmain.asm
字号:
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
_isdlgmsg macro @hDlg
.if @hDlg
invoke IsDialogMessage,@hDlg,addr msg
test eax,eax
jnz @B
.endif
endm
.code
WinMain proc hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD
LOCAL wc :WNDCLASSEX
LOCAL msg :MSG
local @hAccel:DWORD
;---------------------
;加载加速键
invoke LoadAccelerators,NULL ,1000
mov @hAccel,eax
;注册主窗口类
invoke RtlZeroMemory,addr wc,sizeof wc
mov wc.cbSize,sizeof WNDCLASSEX
mov wc.style,CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW
m2m wc.hInstance,hInst
mov wc.lpszMenuName,IDM_MAIN
invoke LoadIcon,hInstance,IDI_MAIN
mov wc.hIcon,eax
mov wc.hbrBackground,NULL
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor, eax
mov wc.lpfnWndProc,offset WndProc
mov wc.lpszClassName,offset szClassName
invoke RegisterClassEx, addr wc
;建立主窗口框架
mov eax,CW_USEDEFAULT
invoke CreateWindowEx,WS_EX_CLIENTEDGE or WS_EX_ACCEPTFILES ,\
addr szClassName,addr szWindowName,\
WS_OVERLAPPEDWINDOW or WS_VSCROLL ,\
eax,eax,eax,eax,\
NULL,0,hInst,NULL
;-----------------------------------------
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
;-----------------------------------------
call _InitApp;xHex.asm
@@:
invoke GetMessage,addr msg,NULL,0,0
test eax, eax
jz @F
invoke TranslateAccelerator,hWnd ,@hAccel,addr msg
.if eax==0
_isdlgmsg g_hDlg_GoTo
_isdlgmsg g_hDlg_Conv
_isdlgmsg g_hDlg_Find
invoke TranslateMessage, addr msg
invoke DispatchMessage, addr msg
.endif
jmp @B
@@:
;------------------------------------------------
mov eax,msg.wParam
ret
WinMain endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -