鱼C论坛

 找回密码
 立即注册
查看: 1527|回复: 0

[技术交流] 【学习笔记】模态对话框例子

[复制链接]
发表于 2012-7-17 18:29:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     .386
     .model flat, stdcall
     option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include    windows.inc
include    user32.inc
includelib   user32.lib
include    kernel32.inc
includelib   kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN   equ   1000h ;图标
DLG_MAIN   equ   2000h ;对话框资源
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     .data?
hInstance   dd    ?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain  proc  uses ebx edi esi hWnd,wMsg,wParam,lParam
     mov   eax,wMsg
     .if   eax  == WM_CLOSE      ;关闭对话框窗口所作操作
        invoke  EndDialog,hWnd,NULL    ;结束对话框窗口
     .elseif  eax  ==  WM_INITDIALOG     ;在对话框窗口还没有显现出来就处理的消息
        invoke  LoadIcon,hInstance,ICO_MAIN  ;载入图标返回句柄
        invoke  SendMessage,hWnd,\
           WM_SETICON,ICON_BIG,eax   ;发送消息到对话框过程来设置菜单图标
     .elseif  eax  == WM_COMMAND
        mov   eax,wParam      ;wParam存储了菜单命令
        movzx  eax,ax
        .if   eax == IDOK      ;如果按下了OK按钮
        invoke  EndDialog,hWnd,NULL    ;结束对话框窗口
        .endif
     .else
        mov eax,FALSE
        ret
     .endif
     mov eax,TRUE
     ret
_ProcDlgMain  endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
  invoke  GetModuleHandle,NULL
  mov   hInstance,eax
  invoke  DialogBoxParam,hInstance,DLG_MAIN,\      ;创建模态对话框
     NULL,offset _ProcDlgMain,NULL       ;函数从hInstance模块装载DLG_MAIN的资源
                   ;父窗口就是本身,对话框过程是_ProcDlgMain
                   ;dwInitParam是当做WM_INITDIALOG消息的lParam传给对话框过程,用来自定义消息
  invoke  ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end   start

======================================================================
RC文件

#include     <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define  ICO_MAIN  0x1000          //图标
#define  DLG_MAIN  0x2000          //对话框
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN ICON   "Main.ico"         //图标文件
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG   50, 50, 113, 64        //对话框资源定义:X坐标,Y坐标,宽度,高度
STYLE      DS_MODALFRAME | WS_POPUP | WS_VISIBLE
       | WS_CAPTION | WS_SYSMENU     //风格定义
CAPTION      "对话框模板"        //定义显示在窗口标题栏上的文字
FONT      10, "新宋体"        //定义对话框包括子窗口控件使用的字体和大小
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BEGIN
   //ICON   ICO_MAIN, -1, 10, 11, 18, 21    //方法1
   CONTROL   ICO_MAIN,-1,"static",SS_ICON,10,11,18,21 //方法2
   //CTEXT   "简单的对话框例子\n用Win32ASM编写",
   //     -1, 36, 14, 70, 19       //方法1
   CONTROL   "简单的对话框例子\n方法2编写",-1,
       "Static",SS_CENTER | WS_GROUP,36,14,70,19 //方法2
   
   //DEFPUSHBUTTON "确定(&X)", IDOK, 58, 46, 50, 13   //方法1
   CONTROL   "退出(&E)",IDOK,"Button",
       BS_DEFPUSHBUTTON | WS_TABSTOP,58,46,50,13 //方法2
   
   CONTROL   "", -1, "Static", SS_ETCHEDHORZ
       | WS_CHILD | WS_VISIBLE, 6, 39, 103, 1  //分割线,无法用别的方法
END
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//WS_POPUP  :弹出式窗口
//WS_VISIBLE :初始状态可见
//WS_SYSMENU :创建一个在其标题条中具有系统菜单框的窗口,仅适用于带标题条的窗口
//DS_MODALFRAME :指定带模式对话框边界的对话框,此风格和WS_CAPTION、WS_SYSMENU风格一起,创建带标题条和系统菜单的对话框
//WS_CAPTION :创建一个有标题的窗口,包含了WS_BORDER,不能和WS_DLGFRAME一起使用
    //WS_BORDER  :创建一个有边框的窗口
    //WS_DLGFRAME :创建一个带有双层边框但没有标题的窗口
//CONTROL 文本, ID, 类, 风格, X, Y, 宽度, 高度 [,扩展风格]
//invoke CreateWindow, 类名, 文本, 风格, X, Y, 宽度, 高度, 对话框窗口句柄, ID, hInstance, NULL
//控件名称 [文本,] ID,X,Y,宽度,高度[,风格][,扩展风格]
//类介绍:按钮(Button)、静态(Static)、编辑(Edit)、滚动条(ScrollBar)、列表框(ListBox)、组合框(ComboBox)






想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-24 23:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表