1. “打开”文件和“保存”文件对话框

    1. 显示 “打开” 对话框的函数是 GetOpenFileName,显示“保存”文件对话的函数是 GetSaveFileName ,这两个对话框可以让用户选择 驱动器、目录、以及一个文件名(打开对话框还允许选择多个文件),但这两个对话框并不对文件进行任何操作,也就是说,它们进给用户提供一个同一界面来“选择”文件名,获取文件名以后,对程序的打开、读写等操作还需要程序员自己解决。

    2. 这两个函数的用法:

      lpofn 参数是一个指针,指向一个 OPENFILENMAE 结构,程序在调用函数前需要在结构中填写初始化数据,两个函数使用的结构是一样的,只是实用的初始化数据有些不同而已。

    3. lpofn 结构:

      在windows.inc 中结构定义如下:

      结构中一些重要的字段说明:

      1. ipstrFile – 指向一个包含文件名的缓冲区。如果这个缓冲区中已经包含了一个文件名,那么对话框初始的时候将显示这个文件名。当用户选择了一个文件的时候,函数在这里返回新的文件名。
      2. nMaxfile – 指定 lpstrFIle 参数指向的缓冲区长度。
      3. lpstrFileTitle – 指向一个缓冲区,用来接收用户选择的不含路径的文件名。这个字段可以为NULL。
      4. nMaxFileTitle – 指明 lpstrFileTitle 参数指向的缓冲区长度。
      5. lpstrInitialDir – 对话框的初始化目录,这个字段可以为 NULL。
      6. lpstrTitle – 指向自定义的对话框标题,如果这个字段为NULL,那么“打开”对话框和“保存”对话框的默认标题是“打开”和“另存为”。
      7. nFileOffset – 返回文件名字符串中文件名的起始位置,如果用户选择了文件"c:\dir1\file.ext’,这里将返回8(因为 file.ext 中 f 在第8个位置)
      8. nFilExtension – 返回文件名字符串中扩展名的起始位置,同样的上面的字符串,这里返回13.如果文件名的最后一个字符串是“.”,这里返回0,表示文件没有拓展名,这个字段和 nFileOffset 字段为分析文件名提供了方便。
      9. lpstrDefExt – 指定默认拓展名,如果用户输入了一个没有拓展名的文件名,那么函数会自动加上这个默认拓展名。
      10. Flags字段 – 该标志字段决定了对话框的不同行为,它可以是一些取值的组合。下面是一些重要的标志:
        1. OFN_ALLOWMULTISELECT – 允许同时选择多个文件名。
        2. OFN_CREATEPROMPT – 如果用户输入了一个不存在的文件名,对话框向用户提问“是否建立文件”
        3. OFN_FILEMUSTEXIST – 用户只能选择一个已经存在的文件名,使用这个文件名的同时必须使用 OFN_PATHMUSTEXIST 标志。
        4. OFN_HIDEREADONLY – 对话框不显示“以只读方式打开”复选框。
        5. OFN_OVERWRITEPROMPT – 在“保存”文件对话框中使用过的时候,当选择一个已存在的文件时,对话框会提问“是否覆盖文件”。
        6. OFN_PATHMUSTEXIST – 用户输入文件名时,路径必须存在。
        7. OFN_READONLY – 对话框中的“以只读方式打开”复选框初始化的时候处于选中状态。
    4. 说明:

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

    5. 代码解读:

  2. 字体选择对话框

    1. 介绍:

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

    2. 函数,显示选择“字体”对话框的函数是 ChooseFont:

    3. 结构体 CHOOSEFONT 介绍:

      lpcf 是一个 CHOOSEFONT结构体:

      重要字段介绍:

      1. hDC – 当Flags字段中制定 CF_PRINTERFONTS 标志时,它是打印机的DC句柄。
      2. lpLogFont – 指向一个包含 LOGFONT 结构的缓冲区。 LOGFONT 结构可以用来指定字体的名称和属性。如果 Flags 字段中制定 CF_INITTOLOGFONTSTRUCT 标志的话,对话框将根据这个结构初始化对话框,函数也在这里返回用户选择的字体和名称。
      3. iPointSize – 返回用户选择的字号大小,单位是 1/10 磅。
      4. rfbColors – 如果 FLags 字段的 CF_EFFECTS 标志被设置,对话框将根据这个数值初始化“颜色”下拉式列表框。另外,函数返回时这里返回用户选择的字体颜色。
      5. nFontType – 返回用户选择的字体属于哪一类,可能的返回值有 BOLD_FONTTYPE, ITALIC_FONTTYPE, PRINTER_FONTTYPE, REGULAR_FONNTYPE, SCREEN_FONTTYPE 等。
      6. Flags 标志,其初始值决定了对话框的不同行为,函数返回的时候也会在这里返回一些用户选择:
        1. CF_BOTH – 对话框同时列出打印机字体和屏幕字体。
        2. CF_TTONLY – 对话框只列出 TrueType 字体。
        3. CF_EFFECTS – 对话框中显示 “效果” 复选框。
        4. CF_FIXEDPITCHONLY – 对话框的字体列表中只显示等宽字体。
        5. CF_LIMITSIZE – 对话框显示的字体尺寸限于 nSizeMin 和 nSizeMax 字段指定的数值之间。
        6. CF_NOSTYLESEL – 对话框不显示“字形”组合列表框。
        7. CF_NOSIZESEL – 对话框不显示“大小”组合列表框。
        8. CF_SCREENFONTS – 字体列表中只显示屏幕字体。
    4. 使用介绍:

      1. 调用 ChooseFont 函数实,函数会停留直到对话框关闭为止,当用户单击了对话框中的“确定”按钮时,函数返回 TRUE,用户单击“取消”按钮退出时,返回返回 FALSE。
      2. 在调用 ChooseFont 之前,lpLogFont 字段被指向一个 LOGFONT结构,对话框关闭的时候,函数在 LOGFONT 结构的 lfFaceName 字段中返回字体的名称,字体的效果和字形也在LOGFONT结构中返回。
      3. 用户选择的颜色在rgbColors 字段中返回,字体大号在 iPointSize 字段中返回,由于单位是 1/10 磅,所以返回的值等于对话框中选择的字号大小乘以10.
    5. 代码解读:

  3. “颜色”选择对话框

    1. 颜色对话框如图所示,左边是基本的选择系统预定义的颜色,右边是拓展的区域,可以由用户自己选择或输入颜色值。
    2. 打开“颜色”选择对话框使用函数 ChooseColor:
    3. lpcc 指向一个 CHOOSECOLOR结构:

      结构中几个重要的参数介绍:

      1. rgbResult – 如果 Flags字段指定了 CC_RGBINIT标志,那么窗框对话框的时候使用这个字段来初始化选择框中的颜色;函数返回时在这里返回用户的选择。
      2. lpCustColors – 指向一个 16个双字长度的缓冲区,定义16中颜色。
      3. Flags – 标志,可以使下面取值的组合:
        1. CC_FULLOPEN – 对话框显示右边的拓展部分,如果不指定这个标志,初始化时候拓展部分不显示,但用户可以通过单击“规定自定义颜色”按钮将对话框展开。
        2. CC_PREVENTFULLOPEN – 禁止“规定自定义颜色”按钮,也就时说不允许用户展开对话框的扩展部分。
        3. CC_RGBINT – 对话框显示的时候用 rgbResult 字段的值初始化选择框中的颜色。
    4. 说明:
      1. 如果用户单击“确定”按钮,函数返回 TRUE,否则函数返回 FALSE。
      2. 使用 ChosseColor 函数要注意的是: lpCustColors 指针不能为 NULL,所以必须分配一个 16个双字长度缓冲区,如果指针是 NULL 会导致函数违规访问 00000000h 处的内存,你就等着看“非法操作吧”!
    5. 代码解读:
  4. “查找”和“替换”文本对话框:

    1. “查找”和“替换”对话框如图所示
    2. 要显示这两种 通用对话框可分别使用 FindText 和 ReplaceText 函数:
    3. 这两个函数同样适用 FINREPLACE 结构:

      结构中关键字段说明:

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

        1. FR_FINDNEXT,FR_REPLACE,FR_REPLACEALL,FR_DIALOGTERM – 分别表示用户单击了“查找下一个”、“替换”、“全部替换”和“取消”按钮。
        2. FR_HIDEUPDOWN、FR_HIDEMATCHCASE、FR_HIDEWHOLEWORD – 初始化的时候,表示对话框不显示“方向”、“区分大小写”、“全字匹配”按钮。
        3. FR_NOMATCHCASE,FR_NOUPDOWN,FR_NOWHOLEWORD – 初始化时将 “区分大小写”、“相仿”、“全字匹配”按钮灰化。
        4. FR_MATCHCASE, FR_WHOLEWORD – 表示用户选中了“区分大小写”或“全字匹配”复选框。
        5. FR_DOWN – 把 “方向” 单选钮设置为 “向下”。
      2. lpstrFindWhat – 指向包含查找字符串的指针,缓冲区的长度必须至少为80字节,这个字符串在初始化的时候在“查找内容”编辑框中,函数也在这里返回用户输入的内容。
      3. ipstrReplaceWith – 指向包含替换字符串的指针,这个字符串在初始化的时候出现在“编辑为”编辑框中,函数也在这里返回用户输入的内容。这个字段在使用 FindText 函数的时候可以为 NULL,但在使用 ReplaceText 函数的时候必须设置,否则对话框不会显示。
      4. wFindWhatLen 和 wReplaceWithLen – 相应的长度。
    4. 使用说明:
      1. “查找”和“替换”对话框的使用有些特殊,因为这两种对话框是非模态对话框,也就是说,当调用后,系统显示对话框后马上返回,对话框保持显示状态,直到用户按下了“取消”按钮后对话框才关闭。如果用户按下了对话框中的某些按钮,对话框设置FINDREPLACE 结构的相关字段并通过自定义的消息通知父窗口的窗口过程,程序中处理 哈找和替换的功能集中在这个自定义消息中完成。另外,由于对话框必须向父窗口发送消息,所以 hwndOwner 字段中必须指定父窗口的句柄,而不能像其他函数一样设置为NULL。

      2. 为了当对话框能够使用自定义消息,程序必须首先使用 RegisterWindowMessage 函数注册自定义消息,这个函数注册消息并返回消息ID,输入的参数是消息名称字符串,Microsoft 的编程手册中说明查找和替换对话框注册 FINDMSGSTRING 消息,其 FINDMSGSTRING 代表字符串,其看代码就能理解:

        1. FINDMSGSTRING

        2. 注册消息,返回消息ID

        3. 窗口过程处理消息:

      3. 注意事项:

        因为查找和替换对话框是非模态对话框,所以使用时要把 FINDREPLACE 结构和字符串全部放在全局变量中,过放在窗口过程的局部变量中,对话框还没有关闭的情况下,这些全局变量就已经被释放了,以后对话框存取的就会是无效地址。

  5. “页面设置”对话框

    1. 介绍
      “页面设置”对话框用来设置打印机参数,用户在对话框中选择打印机,打印纸张大小、也边距和纸张方向,还可以引用一个打机属性的设置对话框。用户可以在这里完成与打印有关的所有设备的工作。

      1. 显示“页面设置”对话框使用 PageSetupDlg 函数:
      2. lppsd 参数指向一个 PAGESETUPDLG 结构:

        由于这个暂时还用不到,在这里参数先不说了吧,之后用再继续查阅。
      3. 代码:

win32 8.2 使用通用对话框相关推荐

  1. 第七章:无模式对话框 和 Windows通用对话框类

    第七章:无模式对话框 和 Windows通用对话框类 1,[无模式对话框]在它处于激活状态下还允许用户在(同一个应用程序中)其它地方工作. [通用对话框]则是C++和一组Windows的实用对话框之间 ...

  2. wxWidgets:使用通用对话框

    wxWidgets:使用通用对话框 wxWidgets:使用通用对话框 介绍 使用文件对话框 - wxFileDialog 使用字体对话框 - wxFontDialog 使用目录对话框 - wxDir ...

  3. C#学习笔记——通用对话框

    Visual Studio提供的通用对话框控件有:ColorDialog.FolderBrowserDialog.FontDialog.OpenFileDialog.SaveFileDialog.Pa ...

  4. 二级VB培训笔记07:通用对话框

    二级VB培训笔记07:通用对话框 通用对话框(CommonDialog)控件提供了一组标准对话框界面,包括打开文件.保存文件.选择颜色.选择字体.设置打印机和帮助等六个对话框.这些对话框只能返回用户输 ...

  5. java调用通用对话框,利用Java Swing设计通用对话框

    利用Java Swing设计通用对话框 分享到: 文/杨少波 在Java Swing编程中,程序员还可以自定义对话框,一般可以从JDialog类来继承.下面给出一个对话框类的代码: class Hel ...

  6. [QT_040]Qt学习之通用对话框:QColorDialog、QFontDialog、QInputDialog

    本文转自:<Qt编程指南>        作者:奇先生 Qt编程指南,Qt新手教程,Qt Programming Guide 11.3 通用对话框:QColorDialog/QFontDi ...

  7. [QT_041]Qt学习之通用对话框:QErrorMessage、QFileDialog、QProgressDialog

    本文转自:<Qt编程指南>        作者:奇先生 Qt编程指南,Qt新手教程,Qt Programming Guide 11.4 通用对话框:QErrorMessage.QFileD ...

  8. win32模态与非模态对话框

    win32模态与非模态对话框 一.模态对话框与非模态对话框的区别 二.模拟实现模态窗口 1. 非阻塞的方式实现窗口的模态 2. 阻塞的方式实现窗口的模态 一.模态对话框与非模态对话框的区别 使用Dia ...

  9. 易语言制作通用对话框

    今天来分享如何使用易语言制作通用对话框. 第一步 创建Windows窗口程序并绘制组件 新建Windows窗口程序,这次我们需要绘制一个图片框,一个按钮,一个标签和一个通用对话框,并将按钮命名为&qu ...

最新文章

  1. 一文看懂BATH新基建:5G是基础,AI是内核
  2. 不懂技术系列--如何快速调试html5页面/手机页面
  3. Python中Numpy(2,numpy的基本操作(级联,维度转换,切分,副本))
  4. 深港澳大湾区(深圳).NET技术交流会圆满成功
  5. 【OpenCV 例程200篇】13. 图像的加法运算(cv2.add)
  6. TexturePacker学习笔记——制作NGUI Atlas
  7. python 获得时间戳_Python 获取时间戳
  8. WinZip Pro 9 for Mac(专业zip压缩解压工具)
  9. 全国地址邮编.sql
  10. PS怎么调整字体的行间距
  11. 安装hustoj的一些心得及html的笔记
  12. 自定义通知图标音量电池没有的解决方法
  13. 多益网络2013校园招聘第二轮笔试题目
  14. kafka集群kafka-eagle安装
  15. 艾永亮:企业微信,私域流量“后时代”的开启者
  16. gensim corpora的简单使用
  17. Unable to find the VMX binary ‘D:\新建文件夹1\vmware-vmx.exe‘.
  18. 第5章第3节:如何给幻灯片中的元素添加交互效果 [PowerPoint精美幻灯片实战教程]
  19. Excel工具的函数公式用法及应用
  20. 薄盒 | 方文山原创数字潮玩《庞克猫史汀》系列正在展出中

热门文章

  1. Denavit-Hartenberg Matrix (D-H矩阵)
  2. excel2010的使用笔记
  3. Jieyue捷阅网购物商城项目介绍说明
  4. 若依ruoyi框架实现单点登录或者接入统一认证
  5. 防火墙的基础配置(一)
  6. 20230103编译ToyBrick的TB-RK3588X的Andorid12的LOG01
  7. Android新手上路
  8. Vue响应式原理的简单模型
  9. Rtos的调研分析报告
  10. HIT计算机系统大作业-程序人生-Hello’s P2P