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

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

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




■   OFN_ALLOWMULTISELECT——允许同时选择多个文件名。

■   OFN_CREATEPROMPT——如果用户输入了一个不存在的文件名,对话框向用户提问“是否建立文件”。

■   OFN_FILEMUSTEXIST——用户只能选择一个已经存在的文件名,使用这个标志的时候必须同时使用 OFN_PATHMUSTEXIST标志。

■   OFN_HIDEREADONLY——对话框中不显示“以只读方式打开”复选框。

■   OFN_OVERWRITEPROMPT——在“保存”文件对话框中使用的时候,当选择一个已存在的文件时,对话框会提问“是否覆盖文件”。

■   OFN_PATHMUSTEXIST——用户输入文件名时,路径必须存在。

■   OFN_READONLY——对话框中的“以只读方式打开”复选框初始化的时候处于选中状态。

调用显示“打开”或“保存”文件对话框函数时,函数会停留直到对话框关闭为止,当用户单击了对话框中的“确定”按钮时,函数返回TRUE,用户单击“取消”按钮退出时,函数返回FALSE,程序可以由此判断是否需要继续进行打开或保存文件的操作。具体的代码可以参考例子中的_SaveAs和_OpenFile子程序。

8。2。2  选择字体对话框

“选择字体”通用对话框如图8。2所示,对话框列出了系统中安装的字体,用户可以在上面选择字体名称,同时可以选择字体大小、颜色以及一些效果如斜体、粗体、删除线或下划线等,显示选择字体对话框的函数是ChooseFont:

invoke  ChooseFont,lpcf

lpcf指向一个CHOOSEFONT结构,这个结构是这样定义的:


图8。2  选择字体对话框

CHOOSEFONTA STRUCT

  LStructSize       DWORD    ?   ;结构长度

  HwndOwner         DWORD    ?   ;所属窗口

  Hdc               DWORD    ?

  LpLogFont         DWORD    ?   ;指向一个LOGFONT结构

  IPointSize        DWORD    ?   ;选择的字体大小

  Flags             DWORD    ?   ;标志

  RgbColors         DWORD    ?   ;选择的字体颜色

  LCustData         DWORD    ?

  LpfnHook          DWORD    ?

  LpTemplateName    DWORD    ?

  HInstance         DWORD    ?

  LpszStyle         DWORD    ?

  NFontType         WORD     ?

  Alignment         WORD     ?

  NSizeMin          DWORD    ?

  NSizeMax          DWORD    ?

CHOOSEFONTA ENDS



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


第8章 通用对话框


8。2 使用通用对话框(2)

    
结构中一些重要的字段含义如下:

●   hDC——当Flags字段中指定CF_PRINTERFONTS标志时,它是打印机的DC句柄。

●   lpLogFont——指向一个包含LOGFONT结构的缓冲区。LOGFONT结构可以用来指定字体的名称和属性。如果Flags字段中指定CF_INITTOLOGFONTSTRUCT标志的话,对话框将根据这个结构初始化对话框,函数也在这里返回用户选择的字体名称。

●   iPointSize——返回用户选择的字体大小,单位是1/10磅。

●   rgbColors——如果Flags字段的CF_EFFECTS标志被设置,对话框将根据这个数值初始化“颜色”下拉式列表框。另外,函数返回时在这里返回用户选择的字体颜色。

●   nFontType—返回用户选择的字体是属于哪一类的,可能返回的值有BOLD_FONTTYPE,ITALIC_FONTTYPE,PRINTER_FONTTYPE,REGULAR_FONTTYPE和SCREEN_FONTTYPE等。

另一个关键的字段是Flags字段,Flags字段的初始值决定了对话框的不同行为,函数返回的时候也会在这里返回一些用户的选择,它可以是下面取值的组合:

●   CF_BOTH——对话框同时列出打印机字体和屏幕字体。

●   CF_TTONLY——对话框只列出TrueType字体。

●   CF_EFFECTS——对话框中显示“效果”复选框。

●   CF_FIXEDPITCHONLY——对话框的字体列表中只显示等宽字体。

●   CF_LIMITSIZE——对话框显示的字体尺寸限于nSizeMin和nSizeMax字段指定的数值之间。

●   CF_NOSTYLESEL——对话框中不显示“字形”组合列表框。

●   CF_NOSIZESEL——对话框中不显示“大小”组合列表框。

●   CF_SCREENFONTS——字体列表中只显示屏幕字体。

调用ChooseFont函数时,函数会停留直到对话框关闭为止,当用户单击了对话框中的 “确定”按钮时,函数返回TRUE,用户单击“取消”按钮退出时,函数返回FALSE。具体的使用例子可以参考例子中的_ChooseFont子程序。

在调用ChooseFont之前,lpLogFont字段被指向一个LOGFONT结构,对话框关闭的时候,函数在LOGFONT结构的lfFaceName字段中返回字体的名称,字体的效果和字形也在LOGFONT结构中返回。

用户选择的颜色在rgbColors 字段中返回,字体大小在iPointSize字段中返回,由于单位是1/10磅,所以返回的数值等于对话框中选择的字体大小乘以10。

8。2。3  选择颜色对话框

选择颜色对话框如图8。3所示,左边是基本的选择系统预定义颜色的区域,右边是扩展的区域,可以由用户自己选择或输入颜色值。


图8。3  选择颜色对话框

打开选择颜色对话框使用函数ChooseColor:

invoke  ChooseFont,lpcc

lpcc指向一个CHOOSECOLOR结构,这个结构是这样定义的:

CHOOSECOLORA STRUCT

  LStructSize        DWORD   ?   ;结构长度

  HwndOwner          DWORD   ?   ;所属窗口

  HInstance          DWORD   ?

  RgbResult          DWORD   ?   ;用户选择的颜色值

  LpCustColors       DWORD   ?   ;用户自定义颜色缓冲区

  Flags              DWORD   ?   ;标志

  LCustData          DWORD   ?

  LpfnHook           DWORD   ?

  LpTemplateName     DWORD   ?

CHOOSECOLORA ENDS

结构中几个重要的字段说明如下。

●   rgbResult——如果Flags字段指定了CC_RGBINIT标志,那么创建对话框的时候使用这个字段来初始化选择框中的颜色;函数返回的时候在这里返回用户选择的颜色。

●   lpCustColors——指向一个16个双字长度的缓冲区,定义16种自定义颜色。

●   Flags——标志,可以是下面取值的组合:

■   CC_FULLOPEN——对话框显示右边的扩展部分,如果不指定这个标志,初始化的时候扩展部分不显示,但用户可以通过单击“规定自定义颜色”按钮将对话框展开。

■   CC_PREVENTFULLOPEN——禁止“规定自定义颜色”按钮,也就是说不允许用户展开对话框的扩展部分。

■   CC_RGBINIT——对话框显示的时候用rgbResult字段的值初始化选择框中的颜色。

如果用户单击“确定”按钮,函数返回TRUE,否则函数返回FALSE。读者可以在例子文件中的_ChooseColor子程序中找到使用这个函数的详细代码。

使用ChooseColor函数要注意的是:lpCustColors指针不能为NULL,所以必须分配一个16个双字长度缓冲区,如果指针是NULL会导致函数违规访问00000000h处的内存,就等着看“非法操作”吧!

8。2。4  查找和替换文本对话框

查找文本对话框如图8。4的上图所示,替换文本对话框如图8。4的下图所示,要显示这两种通用对话框可分别使用FindText和ReplaceText函数:

    invoke  FindText,lpfr

    invoke  ReplaceText,lpfr


图8。4  查找和替换对话框

这两个函数都使用同样的FINDREPLACE结构:

FINDREPLACEA STRUCT

  LStructSize         DWORD     ?      ;结构长度

  HwndOwner           DWORD     ?      ;所属窗口

  HInstance           DWORD     ?

  Flags               DWORD     ?      ;标志

  LpstrFindWhat       DWORD     ?      ;查找字符串

  LpstrReplaceWith    DWORD     ?      ;替换字符串

  WFindWhatLen        WORD      ?      ;查找字符串长度

  WReplaceWithLen     WORD      ?      ;替换字符串长度

  LCustData           DWORD     ?

  LpfnHook            DWORD     ?

  LpTemplateName      DWORD     ?

FINDREPLACEA ENDS

FINDREPLACE  equ  



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


第8章 通用对话框


8。2 使用通用对话框(3)

    
结构中关键的字段说明如下。

●   Flags——标志,创建对话框的时候,函数根据标志中的数值初始化对话框中各控件的状态,返回的时候根据用户的选择来设置标志字段的内容,标志字段可以是以下取值的组合:

■   FR_FINDNEXT,FR_REPLACE,FR_REPLACEALL,FR_DIALOGTERM——分别表示用户单击了“查找下一个”、“替换”、“全部替换”和“取消”按钮。

■   FR_HIDEUPDOWN,FR_HIDEMATCHCASE与FR_HIDEWHOLEWORD——初始化时使用,表示对话框中不显示“方向”、“区分大小写”与“全字匹配”按钮。

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