📄 chap6_1.htm
字号:
设置按钮显示的光标图。参数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> <td WIDTH="31%"><p ALIGN="JUSTIFY"><span style="font-size: 9pt">ES_READONLY</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_WANTRETURN</span></td> <td WIDTH="69%"><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">除了上表中的风格外,一般还要为控件指定WS_CHILD、WS_VISIBLE、WS_TABSTOP和WS_BORDER窗口风格,WS_BORDER使控件带边框。创建一个普通的单行编辑框应指定风格为WS_CHILD|WS_VISIBLE|WS_TABSTOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -