📄 chap6_1.htm
字号:
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">HBITMAP SetBitmap( HBITMAP hBitmap );<br>
设置按钮显示的位图。参数hBitmap指定了位图的句柄。该函数还会返回按钮原来的位图。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">HBITMAP GetBitmap( ) const;<br>
返回以前用SetBitmap设置的按钮位图。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">HICON SetIcon( HICON hIcon );<br>
设置按钮显示的图标。参数hIcon指定了图标的句柄。该函数还会返回按钮原来的图标。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">HICON GetIcon( ) const;<br>
返回以前用SetIcon设置的按钮图标。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">HCURSOR SetCursor( HCURSOR hCursor );<br>
设置按钮显示的光标图。参数hCursor指定了光标的句柄。该函数还会返回按钮原来的光标。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">HCURSOR GetCursor( );<br>
返回以前用GetCursor设置的光标。</span></p>
</blockquote>
</blockquote>
<p><span style="font-size: 9pt"> </span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">另外,可以使用下列的一些与按钮控件有关的CWnd成员函数来设置或查询按钮的状态。用这些函数的好处在于不必构建按钮控件对象,只要知道按钮的ID,就可以直接设置或查询按钮。</span></p>
<blockquote>
<blockquote>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">void CheckDlgButton( int nIDButton, UINT
nCheck );<br>
用来设置按钮的选择状态。参数nIDButton指定了按钮的ID。nCheck的值0表示按钮未被选择,1表示按钮被选择,2表示按钮处于不确定状态。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">void CheckRadioButton( int nIDFirstButton,
int nIDLastButton, int nIDCheckButton );<br>
用来选择组中的一个单选按钮。参数nIDFirstButton指定了组中第一个按钮的ID,nIDLastButton指定了组中最后一个按钮的ID,nIDCheckButton指定了要选择的按钮的ID。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">int GetCheckedRadioButton( int
nIDFirstButton, int nIDLastButton );<br>
该函数用来获得一组单选按钮中被选中按钮的ID。参数nIDFirstButton说明了组中第一个按钮的ID,nIDLastButton说明了组中最后一个按钮的ID。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">UINT IsDlgButtonChecked( int nIDButton )
const;<br>
返回检查框或单选按钮的选择状态。返回值0表示按钮未被选择,1表示按钮被选择,2表示按钮处于不确定状态(仅用于检查框)。</span></p>
</blockquote>
</blockquote>
<p><span style="font-size: 9pt"> </span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">可以调用CWnd成员函数GetWindowText,GetWindowTextLength和SetWindowText来查询或设置按钮中显示的正文.</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">MFC还提供了CButton的派生类CBitmapButton。利用该类可以创建一个拥有四幅位图的命令按钮,按钮在不同状态时会显示不同的位图,这样可以使界面显得生动活泼。如果读者对CBitmapButton感兴趣,可以参看VC5.0随盘提供的MFC例子CTRLTEST。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">在上一章的Register例子中已演示了各种按钮控件的使用,故这里就不再举例了。</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> </span></p>
<p><b><span style="font-size: 9pt"> </span></p>
<p ALIGN="JUSTIFY"></b><span style="font-size: 9pt"><font color="#3973DE">6.1.4
编辑框控件</font></span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">编辑框(Edit Box)控件实际上是一个简易的正文编辑器,用户可以在编辑框中输入并编辑正文。编辑框既可以是单行的,也可以是多行的,多行编辑框是从零开始编行号的.在一个多行编辑框中,除了最后一行外,每一行的结尾处都有一对回车换行符(用"\r\n"表示).这对回车换行符是正文换行的标志,在屏幕上是不可见的.</span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">编辑框控件会向父窗口发出如表6.5所示的控件通知消息。</span></p>
<p ALIGN="JUSTIFY"><b><span style="font-size: 9pt"> </span></p>
<p ALIGN="CENTER"><span style="font-size: 9pt">表6.5</span></b></p>
<table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
<tr>
<td WIDTH="22%"><b><p ALIGN="JUSTIFY"><span style="font-size: 9pt">消息</span></b></td>
<td WIDTH="78%"><b><p ALIGN="JUSTIFY"><span style="font-size: 9pt">含义</span></b></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_CHANGE</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">编辑框的内容被用户改变了。与EN_UPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的。</span></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_ERRSPACE</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">编辑框控件无法申请足够的动态内存来满足需要。</span></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_HSCROLL</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">用户在水平滚动条上单击鼠标。</span></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_KILLFOCUS</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">编辑框失去输入焦点。</span></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_MAXTEXT</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">输入的字符超过了规定的最大字符数。在没有ES_AUTOHSCROLL或ES_AUTOVSCROLL的编辑框中,当正文超出了编辑框的边框时也会发出该消息。</span></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_SETFOCUS</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">编辑框获得输入焦点。</span></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_UPDATE</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">在编辑框准备显示改变了的正文时发送该消息。</span></td>
</tr>
<tr>
<td WIDTH="22%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">EN_VSCROLL</span></td>
<td WIDTH="78%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">用户在垂直滚动条上单击鼠标。</span></td>
</tr>
</table>
<p><span style="font-size: 9pt"> </span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt"> </span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">MFC的CEdit类封装了编辑框控件。CEdit类的成员函数Create负责创建按钮控件,该函数的声明为</span></p>
<blockquote>
<blockquote>
<blockquote>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">BOOL Create( DWORD dwStyle, const
RECT& rect, CWnd* pParentWnd, UINT nID );</span></p>
</blockquote>
</blockquote>
</blockquote>
<p><span style="font-size: 9pt"> </span></p>
<p ALIGN="JUSTIFY"><span style="font-size: 9pt">参数dwStyle指定了编辑框控件风格,如表6.6所示,dwStyle可以是这些风格的组合。rect指定了编辑框的位置和尺寸。pParentWnd指定了父窗口,不能为NULL。编辑框的ID由nID指定。如果创建成功,该函数返回TRUE,否则返回FALSE.</span></p>
<p ALIGN="JUSTIFY"><b><span style="font-size: 9pt"> </span></p>
<p ALIGN="CENTER"><span style="font-size: 9pt">表6.6 编辑框控件的风格</span></b></p>
<table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
<tr>
<td WIDTH="31%"><b><p ALIGN="JUSTIFY"><span style="font-size: 9pt">控件风格</span></b></td>
<td WIDTH="69%"><b><p ALIGN="JUSTIFY"><span style="font-size: 9pt">含义</span></b></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_AUTOHSCROLL</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">当用户在行尾键入一个字符时,正文将自动向右滚动10个字符,当用户按回车键时,正文总是滚向左边。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_AUTOVSCROLL</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">当用户在最后一个可见行按回车键时,正文向上滚动一页。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_CENTER</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">在多行编辑框中使正文居中。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_LEFT</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">左对齐正文。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_LOWERCASE</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">把用户输入的字母统统转换成小写字母。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_MULTILINE</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">指定一个多行编辑器。若多行编辑器不指定ES_AUTOHSCROLL风格,则会自动换行,若不指定ES_AUTOVSCROLL,则多行编辑器会在窗口中正文装满时发出警告声响。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_NOHIDESEL</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">缺省时,当编辑框失去输入焦点后会隐藏所选的正文,当获得输入焦点时又显示出来。设置该风格可禁止这种缺省行为。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_OEMCONVERT</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">使编辑框中的正文可以在ANSI字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_PASSWORD</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">使所有键入的字符都用“*”来显示。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_RIGHT</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">右对齐正文。</span></td>
</tr>
<tr>
<td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_UPPERCASE</span></td>
<td WIDTH="69%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">把用户输入的字母统统转换成大写字母。</span></td>
</tr>
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -