友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
依依小说 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

windows环境下32位汇编语言程序设计-第26部分

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



 Button
 BS_AUTO3STATE,WS_TABSTOP
 
RADIOBUTTON
 单选钮
 Button
 BS_RADIOBUTTON,WS_TABSTOP
 
AUTORADIOBUTTON
 自动单选钮
 Button
 BS_AUTORADIOBUTTON,WS_TABSTOP
 

控 件 名 称
 说    明
 基 于 的 类
 默认窗口风格
 
GROUPBOX
 分组框
 Button
 BS_GROUPBOX
 
SCROLLBAR 
 滚动条
 ScrollBar
 SBS_HORZ
 
CTEXT
 居中文本
 Static
 SS_CENTER,WS_GROUP
 
LTEXT
 左对齐文本
 Static
 SS_LEFT,WS_GROUP
 
RTEXT
 右对齐文本
 Static
 SS_RIGHT,WS_GROUP
 
ICON
 图标框
 Static
 SS_ICON
 
EDITTEXT
 文本编辑
 Edit
 ES_LEFT,WS_BORDER,WS_TABSTOP
 
BOBOX
 组合框
 boBox
 CBS_SIMPLE,WS_TABSTOP
 
LISTBOX
 列表框
 ListBox
 LBS_NOTIFY,WS_BORDER
 



 
来源:电子工业出版社 作者:罗云彬 上一页         回书目         下一页          
上一页         回书目         下一页          
  


第5章 使用资源


5。4 对 话 框(4)

    
看下面的例子:

GROUPBOX 〃选项〃; …1; 55; 5; 120; 100

PUSHBUTTON 〃退出〃; IDCANCEL; 255; 115; 50; 14

这两条语句和下面的语句编译后产生的二进制资源文件是一模一样的:

CONTROL 〃选项〃; …1; 〃Button〃; BS_GROUPBOX | WS_TABSTOP; 55; 5; 120; 100

CONTROL 〃退出〃; IDCANCEL; 〃Button〃; BS_PUSHBUTTON | WS_TABSTOP; 255; 115; 50; 14

第一种语句的用法比第二种语句不但要直观许多,而且不必书写默认的窗口风格。

当用到的控件没有缩写语法时,那就必须用CONTROL定义了,下面的两句分别定义了一条横线和一个图片框,它们并没有缩写的用法:

CONTROL 〃〃; …1; 〃Static〃; SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE; 60; 65; 110; 1

CONTROL BMP_ID; …1; 〃Static〃; SS_BITMAP | WS_CHILD | WS_VISIBLE; 5; 5; 40; 95

下面以一个例子来演示各种子窗口控件的用法,读者可以在所附光盘的Chapter05Control目录中找到全部的源代码,其中的Control。rc文件如下:

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

#include                    

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

#define ICO_MAIN            Ox1000  //图标

#define DLG_MAIN            1

#define IDB_1           1

#define IDB_2           2

#define IDC_ONTOP       101

#define IDC_SHOWBMP     102

#define IDC_ALOW            103

#define IDC_MODALFRAME  104

#define IDC_THICKFRAME  105

#define IDC_TITLETEXT   106

#define IDC_CUSTOMTEXT  107

#define IDC_BMP         108

#define IDC_SCROLL      109

#define IDC_VALUE       110

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

ICO_MAIN            ICON            〃Main。ico〃

IDB_1           BITMAP      〃Picture1。bmp〃

IDB_2           BITMAP      〃Picture2。bmp〃

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

DLG_MAIN DIALOG 193; 180; 310; 134

STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME

CAPTION 〃对话框子窗口控件示例〃

FONT 9; 〃宋体〃



 GROUPBOX 〃选项〃; …1; 55; 5; 120; 100

 AUTOCHECKBOX 〃总在最前面〃; IDC_ONTOP; 65; 20; 100; 12

 AUTOCHECKBOX 〃显示图片〃; IDC_SHOWBMP; 65; 35; 100; 12

 AUTOCHECKBOX 〃允许更换图片〃; IDC_ALOW; 65; 50; 100; 12

 CONTROL 〃〃; …1; 〃Static〃; SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE; 

      60; 65; 110; 1

 AUTORADIOBUTTON 〃模态边框(&Modal Frame)〃; IDC_MODALFRAME; 

      65; 70; 100; 12; WS_TABSTOP

 AUTORADIOBUTTON 〃可变边框(&Thick Frame)〃; IDC_THICKFRAME; 

      65; 85; 100; 12; WS_TABSTOP

 GROUPBOX 〃标题栏文字〃; …1; 180; 5; 125; 100; BS_GROUPBOX

 BOBOX IDC_TITLETEXT; 190; 20; 105; 70; CBS_DROPDOWNLIST | WS_TABSTOP

 LTEXT 〃自定义文字:〃; …1; 190; 40; 105; 10

 EDITTEXT IDC_CUSTOMTEXT; 190; 55; 105; 12

 LTEXT 〃请在此选择显示在标题栏上面的文字,或者选择“自定义”后自行输入〃;

      …1; 191; 73; 105; 26; WS_BORDER

 CONTROL 〃〃; …1; 〃Static〃; SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE; 

      5; 110; 300; 1

 DEFPUSHBUTTON 〃更换图片(&C)〃; IDOK; 200; 115; 50; 14

 PUSHBUTTON 〃退出(&X)〃; IDCANCEL; 255; 115; 50; 14

 CONTROL IDB_1; IDC_BMP; 〃Static〃; SS_BITMAP | WS_CHILD | WS_VISIBLE; 

      5; 5; 40; 95

SCROLLBAR IDC_SCROLL; 6; 119; 125; 10

 LTEXT 〃0〃; IDC_VALUE; 138; 120; 50; 8



编译后的Control。exe运行后的界面如图5。6所示。

图5。6中的子窗口控件分别是GROUPBOX①,AUTOCHECBOX②,SS_ETCHEDHORZ风格的Static类③,AUTORADIOBUTTON④,BOBOX⑤,EDITTEXT⑥,WS_BORDER风格LTEXT⑦,DEFPUSHBUTTON⑧,SS_BITMAP风格的Static类⑨和滚动条⑩。


图5。6  子窗口控件使用的例子

程序有这些功能:按下“更换图片”按钮⑧可以切换图片框⑨的图片;在组合框⑤中可以选择更换标题栏的文字,选“自定义”的时候可以激活文本编辑框⑥并输入自定义文字;默认状态下对话框是可以调整大小的,如果将单选钮④切换到“模态边框”,那么大小就无法调整。Control。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

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; Equ 等值定义

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

ICO_MAIN       equ   1000h

DLG_MAIN       equ   1

IDB_1          equ   1

IDB_2          equ   2

IDC_ONTOP      equ   101

IDC_SHOWBMP    equ   102

IDC_ALOW       equ   103

IDC_MODALFRAME equ   104

IDC_THICKFRAME equ   105

IDC_TITLETEXT  equ   106

IDC_CUSTOMTEXT equ   107



 
来源:电子工业出版社 作者:罗云彬 上一页         回书目         下一页          
上一页         回书目         下一页          
  


第5章 使用资源


5。4 对 话 框(5)

    
IDC_BMP        equ   108

IDC_SCROLL     equ   109

IDC_VALUE      equ   110

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 数据段

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

               。data?

hInstance      dd    ?

hBmp1          dd    ?

hBmp2          dd    ?

dwPos          dd    ?

               nst

szText1        db    'Hello; World!';0

szText2        db    '嘿,你看到标题栏变了吗?';0

szText3        db    '自定义';0

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 代码段

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

               de

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_ProcDlgMain   proc      uses ebx edi esi hWnd;wMsg;wParam;lParam

               local     @szBuffer'128':byte

 

               mov       eax;wMsg

               。if       eax  WM_CLOSE

                          invoke          EndDialog;hWnd;NULL

                          invoke          DeleteObject;hBmp1

                          invoke          DeleteObject;hBmp2

               。elseif   eax  WM_INITDIALOG

;********************************************************************

; 设置标题栏图标

;********************************************************************

                     invoke   LoadIcon;hInstance;ICO_MAIN

                     invoke   SendMessage;hWnd;WM_SETICON;ICON_BIG;eax

;********************************************************************

; 初始化组合框

;********************************************************************

                     invoke   SendDlgItemMessage;hWnd;

                              IDC_TITLETEXT;CB_ADDSTRING;0;addr szText1

                      invoke   SendDlgItemMessage;hWnd;

                              IDC_TITLETEXT;CB_ADDSTRING;0;addr szText2

                      invoke   SendDlgItemMessage;hWnd;

                              IDC_TITLETEXT;CB_ADDSTRING;0;addr szText3

                      invoke   SendDlgItemMessage;hWnd;

                              IDC_TITLETEXT;CB_SETCURSEL;0;0

                      invoke   GetDlgItem;hWnd;IDC_CUSTOMTEXT

                      invoke   EnableWindow;eax;FALSE

                     invoke   LoadBitmap;hInstance;IDB_1

                      mov      hBmp1;eax

                      invoke   LoadBitmap;hInstance;IDB_2

                     mov      hBmp2;eax

;********************************************************************

; 初始化单选钮和复选框

;********************************************************************

                      invoke   CheckDlgButton;hWnd;IDC_SHOWBMP;BST_CHECKED

                     invoke   CheckDlgButton;hWnd;IDC_ALOW;BST_CHECKED

                      invoke   CheckDlgButton;hWnd;

                               IDC_THICKFRAME;BST_CHECKED

;********************************************************************

; 初始化滚动条

;********************************************************************

                     invoke   SendDlgItemMessage;hWnd;

                               IDC_SCROLL;SBM_SETRANGE;0;100

;********************************************************************

      。elseif  eax  WM_MAND

                        mov ax;wParam

;********************************************************************

; 由于印刷宽度有限,WM_MAND消息处理代码的缩进格式有所影响,请读者注意

;*******
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!