;_DlgSample.asm
;1:把_DlgSample.asm改成你自己的文件名
;2:用VC设计好的资源文件替换_DlgSample.rc文件,把_DlgSample.rc改成你自己的文件名
;3:在[Include 文件定义模块]中包含相应头文件和库文件(在_DlgVariables.asm)
;4:在[Equ 等值定义模块]中定义对话框资源中用到相关控件ID(在_DlgVariables.asm)
;5:在_DlgVariables.asm中定义要用到的全局变量和常量
;6:在[主程序代码模块]中修改DLG_MAIN和DlgName_Proc为相应的对话框资源ID和对话框消息处理过程名称
;7:在[主消息处理代码模块]修改对话框消息处理过程中DlgName_Proc为相应的对话框消息处理过程名称
;8:在[消息响应代码模块]相应的消息处理过程中添加要进行响应的代码
;******************************************************************
;自定义文件包含
;******************************************************************
include _DlgGlobals.asm ;全局数据定义文件
;******************************************************************
.code
;******************************************************************
;消息响应代码模块
;******************************************************************
;对话框初始化调用过程
;在这里添加初始化代码
;return:TURE关闭对话框,FLASE忽略关闭消息
;******************************************************************
_InitDialog proc
ret
_InitDialog endp
;******************************************************************
;对话框关闭调用过程
;在这里添加退出代码
;******************************************************************
_EndDialog proc
ret
_EndDialog endp
;******************************************************************
;菜单单击处理过程
;在这里添加相应菜单单击处理代码
;******************************************************************
_MenuMsgProc proc _nMenuID
;.if _nMenuID == MenuID
;invoke yourfunction
;.elseif _nMenuID == MenuID
;invoke yourfunction
;.endif
ret
_MenuMsgProc endp
;******************************************************************
;控件消息响应过程(WM_COMMAND)
;在这里添加相应控件消息响应代码
;******************************************************************
_CtrlMsgProc proc _nCtrlID,_nMsgID,_hCtrl
;.if _nCtrlID == CtrlID
;invoke yourfunction
;.elseif _nCtrlID == CtrlID
;invoke yourfunction
;.endif
ret
_CtrlMsgProc endp
;******************************************************************
;打开模式对话框函数
;_dwDlgID:对话框资源ID
;_lpfnDlgProc:对话框处理函数指针
;******************************************************************
_ShowDialog proc _dwDlgID,_lpfnDlgProc
invoke GetModuleHandle,NULL
invoke DialogBoxParam,eax,_dwDlgID,NULL,_lpfnDlgProc,NULL
ret
_ShowDialog endp
;******************************************************************
;WM_COMMAND消息分派过程
;******************************************************************
_CmdMsgProc proc _wParam,_lParam
.if _lParam == 0 ;菜单消息,_wParam低16位为菜单ID,高16位为0,_lParam为0
and _wParam,0FFFFH
invoke _MenuMsgProc,_wParam
.else ;控件消息,_wParam低16位为控件ID,高16位为控件消息号,_lParam为控件句柄
mov eax,_wParam
and eax,0FFFFH
shr _wParam,16
invoke _CtrlMsgProc,eax,_wParam,_lParam
.endif
ret
_CmdMsgProc endp
;******************************************************************
;主消息处理代码模块(对话框消息处理过程)
;注意这里修改DlgName_Proc为你的对话框处理过程名称
;******************************************************************
DlgName_Proc proc uses ebx edi esi _hWnd,_uMsg,_wParam,_lParam
mov eax,_uMsg
.if eax == WM_COMMAND
invoke _CmdMsgProc,_wParam,_lParam
.elseif eax == WM_NOTIFY
.elseif eax == WM_HOTKEY
.elseif eax == WM_INITDIALOG
invoke _InitDialog
.elseif eax == WM_CLOSE
invoke _EndDialog
.if eax
invoke EndDialog,_hWnd,NULL
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgName_Proc endp
;******************************************************************
;主程序代码模块
;******************************************************************
start:
invoke InitCommonControls
invoke GetModuleHandle,NULL
mov hInstance,eax
;******************************************************************
;注意这里修改
;DLG_MAIN为你的对话框资源ID
;DlgName_Proc为你的对话框处理过程名称
;******************************************************************
invoke _ShowDialog,DLG_MAIN,offset DlgName_Proc
invoke ExitProcess,NULL
end start
;_DlgSample.rc
#include <resource.h>
#define DLG_MAIN 1
DLG_MAIN DIALOG 50,50,113,64
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "对话框模板"
FONT 9,"宋体"
{
}
;_DlgGlobals.asm
.386
.model flat, stdcall
option casemap :none
;******************************************************************
;Include 文件定义
;******************************************************************
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include gdi32.inc
includelib gdi32.lib
include comctl32.inc
includelib comctl32.lib
;******************************************************************
;Equ 等值定义
;******************************************************************
DLG_MAIN equ 1
;******************************************************************
;数据段
;******************************************************************
.const
;
.data?
hInstance dd ?