爱爱小说网 > 其他电子书 > windows环境下32位汇编语言程序设计 >

第38章

windows环境下32位汇编语言程序设计-第38章

小说: windows环境下32位汇编语言程序设计 字数: 每页3500字

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



翱蚴褂茫⒃谕桓鍪萁峁怪蟹祷赜没г诙曰翱蛑惺淙氲氖荨J褂谜庑┒曰翱蚴呛芗虻サ模恍枰钚唇峁怪械某跏蓟荩缓蟮饔煤呀峁沟刂反刖涂梢粤恕�

dlg32。dll中提供的通用对话框如表8。1所示,表中还包括创建这些对话框使用的函数以及数据结构名称。

 

表8。1  通用对话框列表

通用对话框
 使 用 函 数
 使用数据结构
 
选择颜色
 ChooseColor
 CHOOSECOLOR
 
查找字符串
 FindText
 FINDREPLACE
 
替换字符串
 ReplaceText
 FINDREPLACE
 
选择字体
 ChooseFont
 CHOOSEFONT
 
打开文件
 GetOpenFileName
 OPENFILENAME
 
保存文件
 GetSaveFileName
 OPENFILENAME
 
页面设置
 PageSetupDlg
 PAGESETUPDLG
 

在这些对话框中,查找字符串和替换字符串的对话框是非模态的,方便用户在查找到一个字符串以后,不必关闭对话框就可以继续查找另一个字符串,其他的对话框都是模态对话框。通用对话框使用的例子可以参考所附光盘的Chapter08mDlg目录中的代码,包括汇编源代码mDlg。asm和资源脚本文件mDlg。rc。mDlg。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            dlg32。inc

includelib         dlg32。lib

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

; Equ 等值定义

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

ICO_MAIN           equ  1000

DLG_MAIN           equ  1000

IDM_MAIN           equ  1000

IDM_OPEN           equ  1101

IDM_SAVEAS         equ  1102

IDM_PAGESETUP      equ  1103

IDM_EXIT           equ  1104

IDM_FIND           equ  1201

IDM_REPLACE        equ  1202

IDM_SELFONT        equ  1203

IDM_SELCOLOR       equ  1204

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

; 数据段

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

                           。data?

hInstance          dd        ?

hWinMain           dd        ?

dwFontColor        dd        ?

dwBackColor        dd        ?

dwCustColors       dd        16 dup (?)

stLogFont          LOGFONT          

szFileName         db        MAX_PATH dup (?)

szBuffer           db        1024 dup (?)

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

; 查找替换对话框使用

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

idFindMessage      dd      ?

stFind             FINDREPLACE      

szFindText         db      100   dup (?)

szReplaceText      db      100   dup (?)

                   nst

FINDMSGSTRING      db      'mdlg_FindReplace';0

szSaveCaption      db      '请输入保存的文件名';0

szFormatColor      db      '您选择的颜色值:%08x';0

szFormatFont       db      '您的选择:';0dh;0ah;'字体名称:%s';0dh;0ah

                   db      '字体颜色值:%08x,字体大小:%d';0

szFormatFind       db      '您按下了“%s”按钮';0dh;0ah;'查找字符串:%s';0dh;0ah

                   db      '替换字符串:%s';0

szFormatPrt        db      '您选择的打印机:%s';0

szCaption          db      '执行结果';0

szFindNext         db      '查找下一个';0

szReplace          db      '替换';0

szReplaceAll       db      '全部替换';0

szFilter           db      'Text Files(*。txt)';0;'*。txt';0

                   db      'All Files(*。*)';0;'*。*';0;0

szDefExt           db      'txt';0

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

; 代码段

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

                   de

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

; 页面设置对话框

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

_PageSetup         proc

                   local   @stPS:PAGESETUPDLG

 



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


第8章 通用对话框


8。1 通用对话框简介(2)

    
                   invoke RtlZeroMemory;addr @stPS;sizeof @stPS

                   mov    @stPS。lStructSize;sizeof @stPS

                   push   hWinMain

                   pop    @stPS。hwndOwner

                   invoke PageSetupDlg;addr @stPS

                   。if    eax && @stPS。hDevMode

                          mov   eax;@stPS。hDevMode

                          mov   eax;'eax'

                          invoke wsprintf;addr szBuffer;addr szFormatPrt;eax

                          invoke MessageBox;hWinMain;addr szBuffer;

                                addr szCaption;MB_OK

                   。endif

                   ret

 

_PageSetup         endp

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

; 显示“保存”文件对话框

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

_SaveAs            proc

                   local  @stOF:OPENFILENAME

 

                   invoke RtlZeroMemory;addr @stOF;sizeof @stOF

                   mov    @stOF。lStructSize;sizeof @stOF

                   push   hWinMain

                   pop    @stOF。hwndOwner

                   mov    @stOF。lpstrFilter;offset szFilter

                   mov    @stOF。lpstrFile;offset szFileName

                   mov    @stOF。nMaxFile;MAX_PATH

                   mov    @stOF。Flags;OFN_PATHMUSTEXIST

                   mov    @stOF。lpstrDefExt;offset szDefExt

                   mov    @stOF。lpstrTitle;offset szSaveCaption

                   invoke GetSaveFileName;addr @stOF

                   。if    eax

                          invoke   MessageBox;hWinMain;addr szFileName;

                                  addr szCaption;MB_OK

                   。endif

                   ret

 

_SaveAs            endp

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

; 显示“打开”文件对话框

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

_OpenFile          proc

                   local  @stOF:OPENFILENAME

 

                   invoke RtlZeroMemory;addr @stOF;sizeof @stOF

                   mov    @stOF。lStructSize;sizeof @stOF

                   push   hWinMain

                   pop    @stOF。hwndOwner

                   mov    @stOF。lpstrFilter;offset szFilter

                   mov    @stOF。lpstrFile;offset szFileName

                   mov    @stOF。nMaxFile;MAX_PATH

                   mov    @stOF。Flags;OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST

                   invoke GetOpenFileName;addr @stOF

                   。if    eax

                          invoke    MessageBox;hWinMain;addr szFileName;

                                    addr szCaption;MB_OK

                   。endif

                   ret

 

_OpenFile          endp

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

; 选择颜色

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

_ChooseColor       proc

                   local  @stCC:CHOOSECOLOR

 

                   invoke RtlZeroMemory;addr @stCC;sizeof @stCC

                   mov    @stCC。lStructSize;sizeof @stCC

                   push   hWinMain

                   pop    @stCC。hwndOwner

                   push   dwBackColor

                   pop    @stCC。rgbResult

                   mov    @stCC。Flags;CC_RGBINIT or CC_FULLOPEN

                   mov    @stCC。lpCustColors;offset dwCustColors

                   invoke ChooseColor;addr @stCC

                   。if    eax

                          push  @stCC。rgbResult

                          pop   dwBackColor

                           invoke  wsprintf;addr szBuffer;addr szFormatColor;

                                dwBackColor

                          invoke MessageBox;hWinMain;addr szBuffer;

                                addr szCaption;MB_OK

                   。endif

                   ret

 

_ChooseColor       endp

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

; 选择字体

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

_ChooseFont        proc

                   local  @stCF:CHOOSEFONT

 

                   invoke RtlZeroMemory;addr @stCF;sizeof @stCF

                   mov    @stCF。lStructSize;sizeof @stCF

                   push   hWinMain

                   pop    @stCF。hwndOwner

                   mov    @stCF。lpLogFont;offset stLogFont

                   push   dwFontColor

                   pop    @stCF。rgbColors

                   mov     @stCF。Flags;CF_SCREENFONTS or CF_INITTOLOGFONTSTRUCT

                          or CF_EFFECTS

                   invoke ChooseFont;addr @stCF

                   。if    eax

                          push  @stCF。rgbColors

                          pop   dwFontColor

                          mov   eax;@stCF。iPointSize

                          shl   eax;1

                              invoke  wsprintf;addr szBuffer;addr szFormatFont;

                                addr stLogFont。lfFaceName;

                                dwFontColor;eax

                          invoke MessageBox;hWinMain;addr szBuffer;

                                addr szCaption;MB_OK

                   。endif

                   ret

 

_ChooseFont        endp

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

_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

                   。elseif eax    WM_INITDIALOG

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

; 注册“查找”对话框消息,初始化“查找”对话框的结构

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

                          mov   eax;hWnd

                          mov   hWinMain;eax

                          mov   stFind。hwndOwner;eax

                          mov   stFind。lStructSize;sizeof stFind



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


第8章 通用对话框


8。1 通用对话框简介(3)

    
                       mov      stFind。Flags;FR_DOWN

                       mov        stFind。lpstrFindWhat;offset szFindText

                       mov      stFind。wFindWhatLen;sizeof szFindText

                         mov       stFind。lpstrReplaceWith;offset szReplaceText

                           mov        stFind。wReplaceWithLen;sizeof szReplaceText

                       invoke     RegisterWindowMessage;addr FINDMSGSTRING

                       mov      idFindMessage;eax

               。elseif eax    WM_MAND

                       mov      eax;wParam

返回目录 上一页 下一页 回到顶部 赞(3) 踩(4)

你可能喜欢的