⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap5_6.htm

📁 着重介绍基于C++的web编程技术
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>5.6 公用对话框</title>
</head>

<body link="#3973DE" alink="#3973DE">
<font SIZE="5"><b><div align="center"><center>

<table border="0" width="615" cellspacing="0" cellpadding="0">
  <tr>
    </b><td><div align="center"><center><table border="0" width="615" cellpadding="0" cellspacing="0" height="20">
      <tr>
        <td width="377" bgcolor="#15397D" height="20"></td>
        <td width="238" bgcolor="#000000" height="20"><p align="right"></font><span style="text-decoration: none"><a href="../../index.htm"><font color="#FFFFFF">电脑报Visual 
        C++网络教程</font></a></span></td>
      </tr>
    </table>
    </center></div><font FACE="Times New Roman" SIZE="3"><b><p ALIGN="CENTER"></b></font><font FACE="Times New Roman" size="4" color="#3973DE">5.6 </font><font size="4" color="#3973DE">公用对话框</font><font FACE="Times New Roman" size="4"></p>
    <p ALIGN="CENTER"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">在使用</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的过程中,用户经常会遇到一些常用的有特定用途的对话框。例如,当选择</font><font FACE="Times New Roman" SIZE="3">File-&gt;Open</font><font SIZE="3">,会弹出一个文件选择的对话框,用户可以在其中选择想要打开的文件。象文件选择这样的对话框,使用的非常普遍,因此</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">系统本身提供了对该对话框的支持,用户不必自己设计文件选择对话框。与文件选择对话框类似的还有颜色选择、字体选择、打印和打印设置以及正文搜索和替换对话框。这五种对话框均由</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">支持,被称为公用对话框。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">MFC</font><font SIZE="3">提供了一些公用对话框类,它们均是</font><font FACE="Times New Roman" SIZE="3">CDialog</font><font SIZE="3">类的派生类,封装了公用对话框的功能。表</font><font FACE="Times New Roman" SIZE="3">5.6</font><font SIZE="3">列出了</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">的公用对话框类。</font><b><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="CENTER"></font><font SIZE="3"> </p>
    <p ALIGN="CENTER">表</font><font FACE="Times New Roman" SIZE="3">5.6 </font><font SIZE="3">公用对话框类</font></b></p>
    <table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
      <tr>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">通用对话框类</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">用途</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CColorDialog</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">选择颜色</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CFileDialog</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">选择文件名,用于打开和保存文件</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CFindReplaceDialog</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">正文查找和替换</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CFontDialog</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">选择字体</font></td>
      </tr>
      <tr>
        <td WIDTH="50%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CPrintDialog</font></td>
        <td WIDTH="50%"><font SIZE="3"><p ALIGN="JUSTIFY">打印和打印设置</font></td>
      </tr>
    </table>
    <font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY"></font><font SIZE="3">通用对话框类使用方便,读者只需知道怎样创建对话框和访问对话框的数据,不必关心它们的内部细节。</font><font FACE="Times New Roman" SIZE="3"></p>
    <b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">5.6.1 
    CColorDialog</font><font SIZE="3" color="#3973DE">类</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">CColorDialog</font><font SIZE="3">类用于实现</font><font FACE="Times New Roman" SIZE="3">Color</font><font SIZE="3">(颜色选择)公用对话框。</font><font FACE="Times New Roman" SIZE="3">Color</font><font SIZE="3">对话框如图</font><font FACE="Times New Roman" SIZE="3">5.12</font><font SIZE="3">所示,在</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的画板程序中,如果用户在颜色面板的某种颜色上双击鼠标,就会显示一个</font><font FACE="Times New Roman" SIZE="3">Color</font><font SIZE="3">对话框来让用户选择颜色。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><img src="T5_12.gif" alt="T5_12.tif (167359 bytes)" WIDTH="491" HEIGHT="321"><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">5.12 
    Color</font><font SIZE="3">对话框</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">Color</font><font SIZE="3">对话框的创建与一般的对话框没什么两样:首先是在堆栈上构建一个</font><font FACE="Times New Roman" SIZE="3">CColorDialog</font><font SIZE="3">对象,然后调用</font><font FACE="Times New Roman" SIZE="3">CColorDialog::DoModal( )</font><font SIZE="3">来启动对话框。</font><font FACE="Times New Roman" SIZE="3">CColorDialog</font><font SIZE="3">的构造函数为</p>
    <blockquote>
      <blockquote>
        <blockquote>
          </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CColorDialog( COLORREF 
          clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL );</p>
        </blockquote>
      </blockquote>
    </blockquote>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">参数</font><font FACE="Times New Roman" SIZE="3">clrInit</font><font SIZE="3">用来指定初始的颜色选择,</font><font FACE="Times New Roman" SIZE="3">dwFlags</font><font SIZE="3">用来设置对话框,</font><font FACE="Times New Roman" SIZE="3">pParentWnd</font><font SIZE="3">用于指定对话框的父窗口或拥有者窗口。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">根据</font><font FACE="Times New Roman" SIZE="3">DoModal</font><font SIZE="3">返回的是</font><font FACE="Times New Roman" SIZE="3">IDOK</font><font SIZE="3">还是</font><font FACE="Times New Roman" SIZE="3">IDCANCEL</font><font SIZE="3">可知道用户是否确认了对颜色的选择。</font><font FACE="Times New Roman" SIZE="3">DoModal</font><font SIZE="3">返回后,调用</font><font FACE="Times New Roman" SIZE="3">CColorDialog::GetColor()</font><font SIZE="3">可以返回一个</font><font FACE="Times New Roman" SIZE="3">COLORREF</font><font SIZE="3">类型的结果来指示在对话框中选择的颜色。</font><font FACE="Times New Roman" SIZE="3">COLORREF</font><font SIZE="3">是一个</font><font FACE="Times New Roman" SIZE="3">32</font><font SIZE="3">位的值,用来说明一个</font><font FACE="Times New Roman" SIZE="3">RGB</font><font SIZE="3">颜色。</font><font FACE="Times New Roman" SIZE="3">GetColor</font><font SIZE="3">返回的</font><font FACE="Times New Roman" SIZE="3">COLORREF</font><font SIZE="3">的格式是</font><font FACE="Times New Roman" SIZE="3">0x00bbggrr</font><font SIZE="3">,即低位三个字节分别包含了蓝、绿、红三种颜色的强度。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">读者将在后面的章节中看到颜色选择对话框的例子。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font></b><font color="#3973DE" FACE="Times New Roman" SIZE="3">5.6.2 
    CFileDialog</font><font SIZE="3" color="#3973DE">类</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">CFileDialog</font><font SIZE="3">类用于实现文件选择对话框,以支持文件的打开和保存操作。用户要打开或保存文件,就会和文件选择对话框打交道,图</font><font FACE="Times New Roman" SIZE="3">5.13</font><font SIZE="3">显示了一个标准的用于打开文件的文件选择对话框。用</font><font FACE="Times New Roman" SIZE="3">MFC AppWizard</font><font SIZE="3">建立的应用程序中自动加入了文件选择对话框,在</font><font FACE="Times New Roman" SIZE="3">File</font><font SIZE="3">菜单选</font><font FACE="Times New Roman" SIZE="3">Open</font><font SIZE="3">或</font><font FACE="Times New Roman" SIZE="3">Save As</font><font SIZE="3">命令会启动它们。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><img src="T5_13.gif" alt="T5_13.tif (115270 bytes)" WIDTH="425" HEIGHT="250"><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><font size="2">图<font FACE="Times New Roman">5.13 </font>文件选择对话框<font FACE="Times New Roman"></p>
    </font></font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY"></font><font SIZE="3">文件选择对话框的创建过程与一般对话框的类似,首先是在堆栈上构建一个</font><font FACE="Times New Roman" SIZE="3">CFileDialog</font><font SIZE="3">对象,然后调用</font><font FACE="Times New Roman" SIZE="3">CFileDialog::DoModal( )</font><font SIZE="3">来启动对话框。文件对话框的构造函数为</p>
    <blockquote>
      <blockquote>
        <blockquote>
          <blockquote>
            </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CFileDialog( BOOL 
            bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = 
            OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL 
            );</p>
          </blockquote>
        </blockquote>
      </blockquote>
    </blockquote>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">如果参数</font><font FACE="Times New Roman" SIZE="3">bOpenFileDialog</font><font SIZE="3">的值为</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">,将创建</font><font FACE="Times New Roman" SIZE="3">Open</font><font SIZE="3">(打开文件)对话框,否则就创建</font><font FACE="Times New Roman" SIZE="3">Save As</font><font SIZE="3">(保存文件)对话框。参数</font><font FACE="Times New Roman" SIZE="3">lpszDefExt</font><font SIZE="3">用来指定缺省的文件扩展名。</font><font FACE="Times New Roman" SIZE="3">lpszFileName</font><font SIZE="3">用于规定初始文件名。</font><font FACE="Times New Roman" SIZE="3">dwFlags</font><font SIZE="3">用于设置对话框的一些属性。</font><font FACE="Times New Roman" SIZE="3">lpszFilter</font><font SIZE="3">指向一个过滤字符串,用户如果只想选择某种或某几种类型的文件,就需要指定过滤字符串。参数</font><font FACE="Times New Roman" SIZE="3">pParentWnd</font><font SIZE="3">是指向父窗口或拥有者窗口的指针。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">过滤字符串有特定的格式,它实际上是由多个子串组成,每个子串由两部分组成,第一部分是过滤器的字面说明,如“</font><font FACE="Times New Roman" SIZE="3">Text file (*.txt)</font><font SIZE="3">”,第二部分是用于过滤的匹配字符串,如“</font><font FACE="Times New Roman" SIZE="3">*.txt</font><font SIZE="3">”,子串的两部分用竖线字符“ 
    </font><font FACE="Times New Roman" SIZE="3">| </font><font SIZE="3">”分隔开。各子串之间也要用“ 
    </font><font FACE="Times New Roman" SIZE="3">| </font><font SIZE="3">”分隔,且整个串的最后两个字符必须是两个连续的竖线字符“ 
    </font><font FACE="Times New Roman" SIZE="3">|| </font><font SIZE="3">”。一个典型的过滤字符串如下面所示:</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">char szFilter[]=</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">“</font><font FACE="Times New Roman" SIZE="3">All 
    files (*.*)|*.*|Text files(*.txt)|*.txt|Word documents(*.doc)|*.doc||</font><font SIZE="3">”</font><font FACE="Times New Roman" SIZE="3">;</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">若</font><font FACE="Times New Roman" SIZE="3">CFileDialog::DoModal</font><font SIZE="3">返回的是</font><font FACE="Times New Roman" SIZE="3">IDOK</font><font SIZE="3">,那么可以用表</font><font FACE="Times New Roman" SIZE="3">5.7</font><font SIZE="3">列出的</font><font FACE="Times New Roman" SIZE="3">CFileDialog</font><font SIZE="3">类的成员函数来获取与所选文件有关的信息。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
    <p ALIGN="CENTER">表</font><font FACE="Times New Roman" SIZE="3">5.7 CFileDialog</font><font SIZE="3">类辅助成员函数</font></b></p>
    <table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
      <tr>
        <td WIDTH="24%"><font SIZE="3"><b><p ALIGN="JUSTIFY">函数名</b></font></td>
        <td WIDTH="76%"><font SIZE="3"><b><p ALIGN="JUSTIFY">用途</b></font></td>
      </tr>
      <tr>
        <td WIDTH="24%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetPathName</font></td>
        <td WIDTH="76%"><font SIZE="3"><p ALIGN="JUSTIFY">返回一个包含有全路径文件名的</font><font FACE="Times New Roman" SIZE="3">CString</font><font SIZE="3">对象。</font></td>
      </tr>
      <tr>
        <td WIDTH="24%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetFileName</font></td>
        <td WIDTH="76%"><font SIZE="3"><p ALIGN="JUSTIFY">返回一个包含有文件名(不含路径)的</font><font FACE="Times New Roman" SIZE="3">CString</font><font SIZE="3">对象。</font></td>
      </tr>
      <tr>
        <td WIDTH="24%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetFileExt</font></td>
        <td WIDTH="76%"><font SIZE="3"><p ALIGN="JUSTIFY">返回一个只含文件扩展名的</font><font FACE="Times New Roman" SIZE="3">CString</font><font SIZE="3">对象。</font></td>
      </tr>
      <tr>
        <td WIDTH="24%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetFileTitle</font></td>
        <td WIDTH="76%"><font SIZE="3"><p ALIGN="JUSTIFY">返回一个只含文件名(不含扩展名)的</font><font FACE="Times New Roman" SIZE="3">CString</font><font SIZE="3">对象。</font></td>
      </tr>
    </table>
    <font FACE="Times New Roman" SIZE="3"><b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">5.6.3 CFindReplaceDialog</font><font SIZE="3" color="#3973DE">类</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">CFindReplaceDialog</font><font SIZE="3">类用于实现</font><font FACE="Times New Roman" SIZE="3">Find</font><font SIZE="3">(搜索)和</font><font FACE="Times New Roman" SIZE="3">Replace</font><font SIZE="3">(替换)对话框,这两个对话框都是非模态对话框,用于在正文中搜索和替换指定的字符串。图</font><font FACE="Times New Roman" SIZE="3">5.14</font><font SIZE="3">显示了一个</font><font FACE="Times New Roman" SIZE="3">Find</font><font SIZE="3">对话框,图</font><font FACE="Times New Roman" SIZE="3">5.15</font><font SIZE="3">显示了一个</font><font FACE="Times New Roman" SIZE="3">Replace</font><font SIZE="3">对话框。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><img src="T5_14.gif" alt="T5_14.tif (55570 bytes)" WIDTH="389" HEIGHT="126"><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">5.14 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -