CEdit控件[转]
1、
CButton、CEdit等从CWnd继承了重要的功能:
使用CWnd::SetWindowText和CWnd::GetWindowText可以设置和获得窗口或控件上的文本。
CWnd::SetFont可以设置窗口或控件上的文本字体。
CWnd::EnableWindow()禁止、允许窗口或控件接受鼠标和键盘的输入,即禁止或允许用户的访问。
如果一个CEdit编辑框控件设置了禁止接收输入,那么当其恢复的时候,还需调用SetFocus()重新设置其为焦点。
若在对话框的OnInitDialog()中设置焦点到控件上,OnInitDialog需返回FALSE。
2、
CEdit::Create()用来初始化编辑控件.
virtual BOOL Create(
DWORD dwStyle, //控件风格
const RECT& rect, //控件区域
CWnd* pParentWnd, //父窗口
UINT nID //ID
);
其中控件风格为以下值的“或”组合:
ES_AUTOHSCROLL:当输入文字超出显示横向范围时自动滚动。
ES_AUTOVSCROLL:当输入文字超出显示竖向范围时自动滚动。
ES_CENTER:文本居中对齐
ES_LEFT:文本左对齐
ES_RIGHT:文本右对齐
ES_LOWERCASE:字符小写显示
ES_UPPERCASE:字符大写显示
ES_MULTILINE:允许多行输入(缺省是单行的),。为了让编辑框控件接受换行符,必须设置该控件支持多行输入这一属性。如果指定了ES_AUTOVSCROLL风格,编辑控件将显示尽可能多的文本,并且当用户按下
ENTER键时会自动地垂直滚动文本。如果没有指定ES_AUTOVSCROLL风格,则编辑控件将显示尽可能多的行,如果在按下ENTER键却没有更多
的行要显示的话,就发出蜂鸣声。如果指定了ES_AUTOHSCROLL风格,当光标到达控件的右边时,多行编辑控件会自动地水平滚动文本。如
果要开始一个新行,用户必须按下ENTER键。如果没有指定ES_AUTOHSCROLL风格,控件会在有必要时自动将单词折合到下一行的开始。如
果按下ENTER键,则另起一行。折回单词的位置是由窗口的大小决定的。如果窗口的大小发生改变,折回单词的位置也会反生改变,将会
重新显示文本。多行编辑控件可以有滚动条。具有滚动条的编辑控件会处理它自己的滚动条消息。没有滚动条的编辑控件按照前面描述的
方式进行滚动,并且处理父窗口发出的任何滚动消息
ES_NOHIDESEL:通常,当编辑控件获得输入焦点时,它会显示选择区域, 当失去输入焦点时,它会隐藏选择区域。如果指定了
ES_NOHIDESEL风格则去掉了这个缺省的动作。
ES_NUMBER:只允许输入数字
ES_PASSWORD:在编辑控件中输入字符时,将所有的字符显示为星号(*)。应用程序可以通过SetPasswordChar成员函数来改变显示的字
符。
ES_READONLY:编辑框为只读。
ES_WANTRETURN:当用户在多行编辑控件中输入文本时,如果按下了ENTER键,则插入回车换行符。这个风格对单行编辑控件不起作用。
eg:
BOOL CtestDlg::OnInitDialog() { ...... // TODO: 在此添加额外的初始化代码 static CEdit MyEdit;//定义编辑框控件 MyEdit.Create(ES_LEFT|WS_VISIBLE, CRect(0,100,200,120),this, 123); CFont fontEdit; fontEdit.CREATE_FONT(20, _T("宋体")); MyEdit.SetFont(&fontEdit);//设置字体 MyEdit.SetFocus();//设置焦点 MyEdit.SetPasswordChar(_T('*'));//作为密码输入控件使用 return FALSE; // 除非将焦点设置到控件,否则返回 TRUE }
3、
普通操作:
SetReadOnly 设置只读
GetLineCount 获得编辑控件中的行数
SetSel 在编辑控件中选中文本,SetSel(-1)将光标移动到文本末尾,SetSel(0)将光标移动到文本开头
SetMargins 为CEdit设置左边和右边的空白边界
GetMargins 获得为CEdit设置左边和右边的空白边界
SetLimitText 设置CEdit能够容纳的文本的最大量
GetLimitText 获得CEdit能够容纳的文本的最大量
PosFromChar 获得指定字符索引的左上角的坐标
CharFromPos 获得最靠近指定位置的字符的行和字符索引
GetLine 从编辑控件中获得一行文本
GetSel 从编辑控件中获得所选中文本的位置
GetPasswordChar 获得当用户输入文本时在编辑控件中显示的口令
SetPasswordChar 设置或清除当用户输入文本时在编辑控件中显示的口令
LineLength 获得编辑控件中的行的长度
LineScroll 在多行编辑控件中滚动文本
ReplaceSel 用指定文本替换编辑控件中当前被选中的文本
GetRect 为编辑控件获取格式化的矩形
SetRect 设置多行编辑控件的带格式的矩形,并更新该控件
SetRectNP 设置多行编辑控件的带格式的矩形,而不必重新绘制
GetFirstVisibleLeLine 获得在编辑控件中最顶部的可视的行
FmtLines 设置在多行编辑控件中的软回车打开或关闭
LimitText 用户在输入文本时的文本长度限制
LineFromChar 获得包含指定字符索引的行的数目
LineIndex 获得在多行编辑控件中的某行的字符索引
GetModify 决定编辑控件的内容是否被修改
SetModify 为编辑控件设置或清除修改标记
GetHandle 获得为当前多行编辑控件分配的内存的句柄
SetHandle 设置为多行编辑控件使用的本地内存的句柄
EmptyUndoBuffer 重新设置(清除)编辑控件的撤销标记
SetTabStops设置多行编辑控件的制表键停顿位
剪贴板操作:
CanUndo 决定一个编辑控件操作是否能够被撤销
Undo 撤销上一次的编辑控件操作
Clear 删除(清除)编辑控件中当前选中的文本
Copy 将编辑控件中的当前选中文本以CF_TEXT格式拷贝到剪贴板中
Cut 删除编辑控件中当前选中的文本,并将删除的文本以CF_TEXT格式拷贝到剪贴板中
Paste 在当前光标位置插入剪贴板内的文本。只有在剪贴板数据为CF_TEXT格式时才进行插入
4、
通告消息事件:
ON_EN_UPDATE 将要显示变动的文本。在控件对文本格式化之后但在显示文本之前发送消息,以便在必要时改变窗口尺寸。
ON_EN_CHANGE 用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在Windows更新显示之后发送的。
ON_EN_SETFOCUS 获得焦点。
ON_EN_KILLFOCUS 失去输入焦点。
ON_EN_HSCROLL 要输入的字符会超过编辑控件的宽度时,发送消息。
ON_EN_VSCROLL 要输入的字符会超过编辑控件的高度时,发送消息。
ON_EN_MAXTEXT 当前输入超过了为编辑控件指定的数目,并作截尾处理。
ON_EN_HSCROLL 用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。
ON_EN_VSCROLL 用户单击了编辑控件中的垂直滚动条,父窗口在屏幕更新之前被通知。
ON_EN_ERRSPACE 不能为特定请求分配足够的空间。