WIN32汇编: 10.把对话框作为主界面[3]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 goddragon 的 blog

            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
        invoke defwindowproc,hwnd,umsg,wparam,lparam
        ret
    .endif
    xor    eax,eax
    ret
wndproc endp
end start


dialog.rc


#include "resource.h"

#define idc_edit                                       3000
#define idc_button                                3001
#define idc_exit                                       3002

#define idm_gettext                             32000
#define idm_clear                                  32001
#define idm_exit                                      32003
 

mydialog dialog 10, 10, 205, 60
style 0x0004 | ds_center | ws_caption | ws_minimizebox |
ws_sysmenu | ws_visible | ws_overlapped | ds_modalframe | ds_3dlook
caption "our first dialog box"
class "dlgclass"
begin
    edittext         idc_edit,   15,17,111,13, es_autohscroll | es_left
    defpushbutton   "say hello", idc_button,    141,10,52,13
    pushbutton      "e&xit", idc_exit,  141,26,52,13, ws_group
end
 

mymenu  menu
begin
    popup "test controls"
    begin
        menuitem "get text", idm_gettext
        menuitem "clear text", idm_clear
        menuitem "", , 0x0800 /*mft_separator*/
        menuitem "e&xit", idm_exit
    end
end

分析:

我们先来分析第一个例子:
该例显示了如何把一个对话框模板注册成一个窗口类,然后创建一个由该窗口类派生的窗口。由于您没有必要自己去创建子窗口控件,所以就简化了许多的工作。
我们先来分析对话框模板。

mydialog dialog 10, 10, 205, 60

先是对话框的名字,然后是关键字“dailog”。接下来的四个数字中,前两个是对话框的坐标,后两个是对话框的宽和高(注意:它们的单位是对话框的单位,而不一定是像素点)。

style 0x0004 | ds_center | ws_caption | ws_minimizebox |
ws_sysmenu | ws_visible | ws_overlapped | ds_modalframe | ds_3dlook

上面定义了对话框的风格。

caption "our first dialog box"

这是显示在对话框标题条上的标题。

class "dlgclass"

这一行非常关键。正是有了关键字class,我们才可以用它来声明把一个对话框当成一个窗口来用。跟在关键字后面的是“窗口类”的名称。

begin
    edittext         idc_edit,   15,17,111,13, es_autohscroll | es_left

本文关键:asm
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top