客源网站个人博客网站
;运行效果

;win32汇编环境,对话框程序模版,含文本框与菜单简单功能
 ;直接抄进RadAsm可编译运行。
 ;下面为asm文件
 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 .386 
 .model flat,stdcall 
 option casemap:none 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 ; Include 文件定义
 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 include    windows.inc 
 include    user32.inc 
 include    kernel32.inc 
 includelib user32.lib 
 includelib kernel32.lib 
; 自定义函数声明
 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD   ;对话框窗口函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 ; 数据段
 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 .data 
 DlgName    db "MyDialog",0 
 AppName    db "提示",0 
 TestString db "你好,我现在在文本框控件里面",0 
.data? 
 hInstance HINSTANCE             ? 
 buffer               db 512 dup(?)   ;定义一个512字节的字符串数组
 .const 
 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 ; Equ 等值定义
 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 ICO_MAIN    equ 1000    ;图标
 IDC_EDIT        equ 3000 
 IDC_BUTTON      equ 3001 
 IDC_EXIT        equ 3002 
 IDM_GETTEXT     equ 32000 
 IDM_CLEAR       equ 32001 
 IDM_EXIT        equ 32002 
   
 ; 代码段
 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 .code 
 start: 
     invoke GetModuleHandle, NULL 
     mov    hInstance,eax 
     invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL 
     invoke ExitProcess,eax 
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    .if uMsg == WM_INITDIALOG 
         invoke    LoadIcon,hInstance,ICO_MAIN    ;加载图标
     invoke    SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
         
         invoke GetDlgItem, hWnd,IDC_EDIT       ;让文本框得到输入焦点
         invoke SetFocus,eax 
         
     .elseif uMsg == WM_CLOSE 
         invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0 
     .elseif uMsg == WM_COMMAND 
         mov eax,wParam 
         .if lParam == 0 
             .if ax == IDM_GETTEXT 
                 invoke GetDlgItemText,hWnd,IDC_EDIT,ADDR buffer,512 
                 invoke MessageBox,NULL,ADDR buffer,ADDR AppName,MB_OK 
             .elseif ax == IDM_CLEAR 
                 invoke SetDlgItemText,hWnd,IDC_EDIT,NULL 
             .elseif ax == IDM_EXIT 
                 invoke EndDialog, hWnd,NULL 
             .endif 
         .else 
             mov edx,wParam 
             shr edx,16 
             .if dx == BN_CLICKED 
                 .IF ax == IDC_BUTTON 
                     invoke SetDlgItemText,hWnd,IDC_EDIT,ADDR TestString 
                 .elseif ax == IDC_EXIT 
                     invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0 
                 .endif 
             .endif 
         .endif 
     .else 
         mov eax,FALSE 
         ret 
     .endif 
     mov eax,TRUE 
     ret 
 DlgProc endp 
end start
