📄 chap5_6.htm
字号:
Find</font><font SIZE="3">对话框</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="center"></font><img src="T5_15.gif" alt="T5_15.tif (69140 bytes)" WIDTH="365" HEIGHT="168"><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">5.15
Replace</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">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">CFindReplaceDialog</font><font SIZE="3">对象是用</font><font FACE="Times New Roman" SIZE="3">new</font><font SIZE="3">操作符在堆中创建的,而不是象普通对话框那样以变量的形式创建。要启动</font><font FACE="Times New Roman" SIZE="3">Find/Replace</font><font SIZE="3">对话框,应该调用</font><font FACE="Times New Roman" SIZE="3">CFindReplaceDialog::Create</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">Create</font><font SIZE="3">函数的声明是</p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">BOOL Create( BOOL
bFindDialogOnly, LPCTSTR lpszFindWhat, LPCTSTR lpszReplaceWith = NULL, DWORD dwFlags =
FR_DOWN, CWnd* pParentWnd = NULL );</p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<p ALIGN="JUSTIFY"></font><font SIZE="3">当参数</font><font FACE="Times New Roman" SIZE="3">bFindDialogOnly</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">Find</font><font SIZE="3">对话框,为</font><font FACE="Times New Roman" SIZE="3">FALSE</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">lpszFindWhat</font><font SIZE="3">指定了要搜索的字符串,</font><font FACE="Times New Roman" SIZE="3">lpszReplaceWith</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">FR_DOWN</font><font SIZE="3">(向下搜索),该参数可以是几个</font><font FACE="Times New Roman" SIZE="3">FR_XXX</font><font SIZE="3">常量的组合,用户可以通过该参数来决定诸如是否要显示</font><font FACE="Times New Roman" SIZE="3">Match case</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">Match Whole Word</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">Find/Replace</font><font SIZE="3">对话框与其它公用对话框的另一个不同之处在于它在工作过程中可以重复同一操作而对话框不被关闭,这就方便了频繁的搜索和替换。</font><font FACE="Times New Roman" SIZE="3">CFindReplaceDialog</font><font SIZE="3">类只提供了一个界面,它并不会自动实现搜索和替换功能。</font><font FACE="Times New Roman" SIZE="3">CFindReplaceDialog</font><font SIZE="3">使用了一种特殊的通知机制,当用户按下了操作的按钮后,它会向父窗口发送一个通知消息,父窗口应在该消息的消息处理函数中实现搜索和替换。</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">5.8</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.8 CFindReplaceDialog</font><font SIZE="3">类的辅助成员函数</font></b></p>
<table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
<tr>
<td WIDTH="25%"><font SIZE="3"><b><p ALIGN="JUSTIFY">函数名</b></font></td>
<td WIDTH="75%"><font SIZE="3"><b><p ALIGN="JUSTIFY">用途</b></font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">FindNext</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">如果用户点击了</font><font FACE="Times New Roman" SIZE="3">Findnext</font><font SIZE="3">按钮,该函数返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">。</font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetNotifier</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">返回一个指向当前</font><font FACE="Times New Roman" SIZE="3">CFindReplaceDialog</font><font SIZE="3">对话框的指针。</font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetFindString</font></td>
<td WIDTH="75%"><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="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetReplaceString</font></td>
<td WIDTH="75%"><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="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">IsTerminating</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">如果对话框终止了,则返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">。</font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">MatchCase</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">如果选择了对话框中的</font><font FACE="Times New Roman" SIZE="3">Match case</font><font SIZE="3">检查框,则返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">。</font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">MatchWholeWord</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">如果选择了对话框中的</font><font FACE="Times New Roman" SIZE="3">Match Whole Word</font><font SIZE="3">检查框,则返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">。</font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">ReplaceAll</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">如果用户点击了</font><font FACE="Times New Roman" SIZE="3">Replace All</font><font SIZE="3">按钮,该函数返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">。</font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">ReplaceCurrent</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">如果用户点击了</font><font FACE="Times New Roman" SIZE="3">Replace</font><font SIZE="3">按钮,该函数返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">。</font></td>
</tr>
<tr>
<td WIDTH="25%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">SearchDown</font></td>
<td WIDTH="75%"><font SIZE="3"><p ALIGN="JUSTIFY">返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">表明搜索方向向下,返回</font><font FACE="Times New Roman" SIZE="3">FALSE</font><font SIZE="3">则向上。</font></td>
</tr>
</table>
<p><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">CEditView</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">MFC AppWizard</font><font SIZE="3">并未提供相应的菜单命令。读者可以在前面的</font><font FACE="Times New Roman" SIZE="3">Register</font><font SIZE="3">工程的</font><font FACE="Times New Roman" SIZE="3">Edit</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">ID</font><font SIZE="3">分别为</font><font FACE="Times New Roman" SIZE="3">ID_EDIT_FIND</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">ID_EDIT_REPLACE</font><font SIZE="3">,则</font><font FACE="Times New Roman" SIZE="3">Find/Replace</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.4
CFontDialog</font><font SIZE="3" color="#3973DE">类</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">CFontDialog</font><font SIZE="3">类支持</font><font FACE="Times New Roman" SIZE="3">Font</font><font SIZE="3">(字体)对话框,用来让用户选择字体。图</font><font FACE="Times New Roman" SIZE="3">5.16</font><font SIZE="3">显示了一个</font><font FACE="Times New Roman" SIZE="3">Font</font><font SIZE="3">对话框。</font><font FACE="Times New Roman" SIZE="3">Font</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">CFontDialog</font><font SIZE="3">对象,然后调用</font><font FACE="Times New Roman" SIZE="3">CFontDialog::DoModal</font><font SIZE="3">来启动对话框。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="center"></font><img src="T5_16.gif" alt="T5_16.tif (144136 bytes)" WIDTH="411" HEIGHT="324"><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">5.16
Font</font><font SIZE="3">对话框</font><font FACE="Times New Roman" SIZE="3"><b></p>
<p ALIGN="JUSTIFY"></b></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">CFontDialog</font><font SIZE="3">类的构造函数如下所示</p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CFontDialog( LPLOGFONT
lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL,
CWnd* pParentWnd = NULL );</p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<p ALIGN="JUSTIFY"></font><font SIZE="3">参数</font><font FACE="Times New Roman" SIZE="3">lplfInitial</font><font SIZE="3">指向一个</font><font FACE="Times New Roman" SIZE="3">LOGFONG</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">pdcPrinter</font><font SIZE="3">指向一个代表打印机的</font><font FACE="Times New Roman" SIZE="3">CDC</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">CFontDialog</font><font SIZE="3">的成员函数来获得所选字体的信息,这些函数在表</font><font FACE="Times New Roman" SIZE="3">5.9</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.9 CFontDialog</font><font SIZE="3">类的辅助成员函数</font></b></p>
<table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
<tr>
<td WIDTH="20%"><font SIZE="3"><b><p ALIGN="JUSTIFY">函数名</b></font></td>
<td WIDTH="80%"><font SIZE="3"><b><p ALIGN="JUSTIFY">用途</b></font></td>
</tr>
<tr>
<td WIDTH="20%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetCurrentFont</font></td>
<td WIDTH="80%"><font SIZE="3"><p ALIGN="JUSTIFY">用来获得所选字体的属性。该函数有一个参数,该参数是指向</font><font FACE="Times New Roman" SIZE="3">LOGFONT</font><font SIZE="3">结构的指针,函数将所选字体的各种属性写入这个</font><font FACE="Times New Roman" SIZE="3">LOGFONT</font><font SIZE="3">结构中。</font></td>
</tr>
<tr>
<td WIDTH="20%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetFaceName</font></td>
<td WIDTH="80%"><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="20%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetStyleName</font></td>
<td WIDTH="80%"><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="20%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetSize</font></td>
<td WIDTH="80%"><font SIZE="3"><p ALIGN="JUSTIFY">返回所选字体的尺寸(以</font><font FACE="Times New Roman" SIZE="3">10</font><font SIZE="3">个象素为单位)。</font></td>
</tr>
<tr>
<td WIDTH="20%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetColor</font></td>
<td WIDTH="80%"><font SIZE="3"><p ALIGN="JUSTIFY">返回一个含有所选字体的颜色的</font><font FACE="Times New Roman" SIZE="3">COLORREF</font><font SIZE="3">型值。</font></td>
</tr>
<tr>
<td WIDTH="20%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">GetWeight</font></td>
<td WIDTH="80%"><font SIZE="3"><p ALIGN="JUSTIFY">返回所选字体的权值。</font></td>
</tr>
<tr>
<td WIDTH="20%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">IsStrikeOut</font></td>
<td WIDTH="80%"><font SIZE="3"><p ALIGN="JUSTIFY">若用户选择了空心效果则返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">,否则返回</font><font FACE="Times New Roman" SIZE="3">FALSE</font><font SIZE="3">。</font></td>
</tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -