2010年8月2日星期一

VC Edit Box 控件

Edit窗口是用来接收用户输入最常用的一个控件。创建一个输入窗口可以使用成员函数:

BOOLCEdit::Create(LPCTSTRlpszText,DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID=0xffff);
其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对输入控件指明专门的风格。

l ES_AUTOHSCROLL,ES_AUTOVSCROLL指明输入文字超出显示范围时自动滚动。

l ES_CENTER,ES_LEFT,ES_RIGHT指定对齐方式

l ES_MULTILINE是否允许多行输入

l ES_PASSWORD是否为密码输入框,如果指明该风格则输入的文字显示为*

l ES_READONLY是否为只读

l ES_UPPERCASE,ES_LOWERCASE显示大写/小写字符

控制显示的文本利用成员函数SetWindowText/GetWindowText用于设置/得到当前显示的文本。

通过GetLimitText/SetLimitText可以得到/设置在输入框中输入的字符数量。

由于在输入时用户可能选择某一段文本,所以通过voidCEdit::GetSel(int&nStartChar,int&nEndChar)得到用户选择的字符范围,通过调用voidCEdit::SetSel(intnStartChar,intnEndChar,BOOLbNoScroll=FALSE)可以设置当前选择的文本范围,如果指定nStartChar=0nEndChar=-1则表示选中所有的文本。voidReplaceSel(LPCTSTRlpszNewText,BOOLbCanUndo=FALSE)可以将选中的文本替换为指定的文字。

此外输入框还有一些和剪贴板有关的功能,voidClear();删除选中的文本,voidCopy();可将选中的文本送入剪贴板,voidPaste();将剪贴板中内容插入到当前输入框中光标位置,voidCut();相当于CopyClear结合使用。

最后介绍一下输入框几种常用的消息映射宏:

l ON_EN_CHANGE输入框中文字更新后产生

l ON_EN_ERRSPACE输入框无法分配内存时产生

l ON_EN_KILLFOCUS/ON_EN_SETFOCUS在输入框失去/得到输入焦点时产生

使用以上几种消息映射的方法为定义原型如:afx_msgvoidmemberFxn();的函数,并且定义形式如ON_Notification(id,memberFxn)的消息映射。如果在对话框中使用输入框,ClassWizard会自动列出相关的消息,并能自动产生消息映射代码。