📄 editcontrol.asm
字号:
include .\head.inc
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.data
ClassName db "EditClass",0
TitleName db "编辑框子窗口",0
ButtonClassName db "BUTTON",0
EditClassName db "EDIT",0
PushButtonText db "确定",0
Replace db "一片冰心在玉壸",0
.data?
hInstance HINSTANCE ?
hwndButtonPush HWND ?
hwndEdit HWND ?
hMenu HMENU ?
.const
ID_BUTTON_PUSH equ 1
ID_EDIT equ 2
IDR_MENU1 equ 101
ID_MENUSELECT equ 40002
ID_MENUEXIT equ 40003
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke WinMain, NULL,NULL,NULL, 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 or CS_DBLCLKS
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
mov eax, hInstance
mov wc.hInstance,eax
invoke GetStockObject,WHITE_BRUSH
mov wc.hbrBackground,eax
mov wc.lpszMenuName,IDR_MENU1
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_ASTERISK
mov wc.hIcon,eax
mov wc.hIconSm,0
invoke LoadCursor,NULL,IDC_HAND
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx,WS_EX_CLIENTEDGE+WS_EX_APPWINDOW,addr ClassName,\
addr TitleName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,400,300,\
NULL,NULL,hInst,NULL
mov hwnd,eax
invoke ShowWindow,hwnd,CmdShow
invoke UpdateWindow,hwnd
.while TRUE
invoke GetMessage, addr msg,NULL,0,0
.BREAK .if (!eax)
invoke TranslateMessage,addr msg
invoke DispatchMessage, addr msg
.endw
mov eax,msg.wParam
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg==WM_DESTROY
invoke PostQuitMessage,NULL
.elseif uMsg==WM_CREATE
invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\
WS_VISIBLE or WS_CHILD or ES_AUTOVSCROLL or ES_MULTILINE ,\
80,50,180,70,hWnd,ID_EDIT,hInstance,NULL
mov hwndEdit,eax
invoke SetFocus ,hwndEdit
invoke CreateWindowEx,NULL, ADDR ButtonClassName,addr PushButtonText,\
WS_VISIBLE or WS_CHILD or BS_DEFPUSHBUTTON or BS_VCENTER ,\
120,150,80,20,hWnd,ID_BUTTON_PUSH,hInstance,NULL
mov hwndButtonPush,eax
invoke EnableWindow ,hwndButtonPush,FALSE
invoke GetMenu,hWnd
mov hMenu,eax
.elseif uMsg==WM_COMMAND
mov eax,wParam
.if lParam
.if ax==ID_BUTTON_PUSH
shr eax,16
.if ax==BN_CLICKED
invoke SendMessage,hwndEdit,EM_REPLACESEL,FALSE,addr Replace
invoke EnableWindow ,hwndButtonPush,FALSE
.endif
.elseif ax==ID_EDIT
shr eax,16
.if ax==EN_CHANGE
invoke EnableMenuItem,hMenu,ID_MENUSELECT,MF_ENABLED
.endif
.endif
.else
.if ax==ID_MENUSELECT
invoke SendMessage,hwndEdit,EM_SETSEL,3,10
invoke SetFocus,hwndEdit
invoke EnableWindow ,hwndButtonPush,TRUE
.elseif ax==ID_MENUEXIT
invoke DestroyWindow,hWnd
.endif
.endif
.else
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.endif
xor eax,eax
ret
WndProc endp
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -