对话框代码模块(汇编)

 ;_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  ?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值