⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainmodelessdialog.asm

📁 windows汇编语言程序设计 吴中平著 一书所附所有源代码。 该书重点讲解了Windows环境下汇编语言程序设计的基本原理及其实现过程
💻 ASM
字号:
include .\head.inc
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
.const
IDR_MODELESSDIALOG             equ   101
IDR_MENUDIALOG                     equ   102
IDC_MODELESSEDIT                  equ   1001
IDC_MODELESSCHECK               equ   1002
IDC_MODELESSBUTTON            equ   1003
IDM_TEXT                                  equ   40001
IDM_EXITDIALOG                      equ   40002
.data
ClassName       db "WinClass",0
TitleName       db "对话框测试",0
Prompt          db "对话框主窗口",0
.data?
hInstance	HINSTANCE ?
.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 hModelessDialog: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,DLGWINDOWEXTRA
   mov   eax, hInstance
   mov   wc.hInstance,eax
   mov   wc.hbrBackground,COLOR_BTNSHADOW
   mov   wc.lpszMenuName,NULL;IDR_MENUDIALOG
   mov   wc.lpszClassName,OFFSET ClassName
   invoke LoadIcon,NULL,IDI_WINLOGO
   mov   wc.hIcon,eax
   mov   wc.hIconSm,0
   invoke LoadCursor,NULL,IDC_HAND
   mov   wc.hCursor,eax
   invoke RegisterClassEx, addr wc
   invoke CreateDialogParam,hInstance,IDR_MODELESSDIALOG,NULL,NULL,NULL
   mov  hModelessDialog,eax
   invoke ShowWindow,hModelessDialog,CmdShow
   invoke UpdateWindow,hModelessDialog
   invoke GetDlgItem,hModelessDialog,IDC_MODELESSEDIT 
   invoke SetFocus,eax
   .while TRUE
      invoke GetMessage, addr msg,NULL,0,0
      .BREAK .IF (!eax)
      invoke IsDialogMessage,hModelessDialog,addr msg
      .if !eax                       
         invoke TranslateMessage,addr msg
         invoke DispatchMessage, addr msg
      .endif
   .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_COMMAND
      mov eax,wParam
      .if lParam==NULL
        .if ax==IDM_TEXT
         invoke MessageBox,hWnd,addr Prompt,addr TitleName,MB_OK
        .elseif ax==IDM_EXITDIALOG
         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 + -