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

📄 控件.asm

📁 DOS_Windows汇编语言程序设计教程
💻 ASM
字号:
.386
.model flat, stdcall
    option casemap :none   ;case sensitive
    include \masm32\include\windows.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\gdi32.inc
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\gdi32.lib
    ;定义宏 szText
    szText MACRO Name, Text:VARARG
    LOCAL lbl
    jmp lbl
    Name db Text,0
    lbl:
    ENDM
    ;过程声明
    WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
    IDD_DIALOG1  equ  1          ;定义对话框ID值
    .data
    hButton1      dd 0           ;第1个按钮句柄
    hButton2      dd 0           ;第2个按钮句柄
    hList1        dd 0           ;列表框句柄
    hIcon1        dd 0           ;图标句柄
    hInstance     dd 0           ;应用程序实例句柄
    .code
start:
    invoke GetModuleHandle, NULL
    mov hInstance, eax
    ;调用资源,建立对话框
invoke DialogBoxParam,hInstance,IDD_DIALOG1,0,ADDR WndProc,0    
    invoke ExitProcess,eax
    ;对话框消息处理过程
WndProc proc hWin   :DWORD,
             uMsg   :DWORD,
             wParam :DWORD,
             lParam :DWORD
    .if uMsg == WM_INITDIALOG  ;对话框显示时产生,一般用于初始化控件
    szText dlgTitle,"我的第一个对话框"
    invoke SendMessage,hWin,WM_SETTEXT,0,ADDR dlgTitle   ;设置新的对话框标题
invoke LoadIcon,hInstance,200       ;装载图标资源
    mov hIcon1, eax                     ;图标句柄'hIcon1
    invoke SendMessage,hWin,WM_SETICON,1,hIcon1      ;修改窗口图标
    invoke GetDlgItem,hWin,1000   ;获取ID=1000的控件的句柄(列表框)
    mov hList1, eax               ;句柄'hList1
    invoke GetDlgItem,hWin,501     ;获取ID=501的控件的句柄(按钮1)
    mov hButton1, eax
    invoke GetDlgItem,hWin,502    ;获取ID=502的控件的句柄(按钮2)
    mov hButton2, eax
    xor eax, eax
    ret
    .elseif uMsg == WM_COMMAND          ;在该消息下处理控件消息
    .if wParam == 501                    ;第1个按钮被按下
    szText botton1,"您按了第 1 个按钮"
  invoke MessageBox,hWin,ADDR botton1,ADDR dlgTitle,MB_OK
    invoke SendMessage,hList1,LB_ADDSTRING,0,addr botton1 ;发送文本到列表框
    .elseif wParam == 502               ;第2个按钮被按下
    szText botton2,"您按了第 2 个按钮"
    invoke MessageBox,hWin,ADDR botton2,ADDR dlgTitle,MB_OK
    invoke SendMessage,hList1,LB_ADDSTRING,0,addr botton2 ;发送文本到列表框
    .endif
    .elseif uMsg == WM_CLOSE             ;程序结束
    invoke EndDialog,hWin,0              ;结束对话框
  .endif
  xor eax, eax                         ;this must be here in NT4
    ret
WndProc endp
end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -