CEdit类提供了Windows编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。
可以通过对话模板或直接从代码中创建一个编辑控件。在两种情形下,首先调用CEdit构造程序构造CEdit对象,再调用Create成员函数创建Windows编辑控件并将其与CEdit对象连接。
构造在CEdit的派生类中可以单步实现。为派生类编写构造程序并从构造程序中调用Create。
CEdit从CWnd继承了重要的功能,要在CEdit对象中设置或获取文本,使用CWnd成员函数SetWindowText和GetWindowText,可以设置和得到编辑控件的全部内容,即使它是一个多行控件。如果编辑控件是多行的,使用CEdit成员函数GetLine,GetSel,GetSel和ReplaceSel来获取和写入控件的部分文本。
如果要处理编辑控件发往其父类(通常是一个CDialog派生类)的通知消息,则向父类中为每一消息添加一个消息映射入口和消息处理成员函数。
各消息映射入口可采用如下形式:
ON_Notification(id,memberFxn)
其中id指定了发送通知的编辑控件的子窗口ID,memberFxn为你写好的处理通知的父成员函数的名字。
父函数形式如下:
afx_msg void memberFxn();
下面是一组可能的消息映射入口,以及在何种情况下向父类发送的描述:·ON_EN_CHANGE用户采取的行动可能会改变编辑控件的文本。与EN_UPDATE通知消息不同,该通知是在Windows更新显示之后发送的。·ON_EN_ERRSPACE编辑控件不能为特定请求分配足够的空间。·ON_EN_HSCROLL用户单击了编辑控件中的水平滚动条,父窗口在屏幕更新之前被通知。·ON_EN_KILLFOCUS编辑控件失去输入焦点。·ON_EN_MAXTEXT当前输入超过了为编辑控件指定的数目,并作截尾处理。当编辑控件不具有ON_EN_HSCROLL风格且要输入的字符会超过编辑控件的宽度时,发送消息。当编辑控件不具有ON_EN_VSCROLL风格且要输入的字符会超过编辑控件的高度时,也会发送消息。·ON_EN_SETFOCUS编辑控件获得焦点。·ON_EN_UPDATE编辑控件将要显示变动的文本。在控件对文本格式化之后但在显示文本之前发送消息,以便在必要时改变窗口尺寸。·ON_EN_VSCROLL用户单击了编辑控件中的垂直滚动条,父窗口在屏幕更新之前被通知。
如果在对话框内创建CEdit对象,CEdit对象在用户关闭对话框时自动被删除。
如果使用对话框编辑器从对话资源中创建CEdit对象,CEdit对象在用户关闭对话框时自动被删除。
如果在窗口内创建CEdit对象,也需要删除它。如果在栈上创建CEdit对象,它被自动删除。如果使用new函数在堆上创建CEdit对象,在用户中止编辑控件时,必须对其调用delete来删除它。如果在CEdit对象中分配存储空间,覆盖CEdit析构程序来处理分配情况。
#include <afxwin.h>
CEdit类的成员
构造函数CEdit构造一个CEdit控件对象Create创建一个Windows编辑控件,并将其与CEdit对象连接
属性CanUndo决定一个编辑控件操作是否能够被撤销GetLineCount获得多行编辑控件中的行数GetModify决定编辑控件的内容是否被修改SetModify为编辑控件设置或清除修改标记GetRect为编辑控件获取格式化的矩形GetHandle获得为当前多行编辑控件分配的内存的句柄SetHandle设置为多行编辑控件使用的本地内存的句柄SetMargins为CEdit设置左边和右边的空白边界GetMargins获得为CEdit设置左边和右边的空白边界SetLimitText设置CEdit能够容纳的文本的最大量GetLimitText获得CEdit能够容纳的文本的最大量PosFromChar获得指定字符索引的左上角的坐标CharFromPos获得最靠近指定位置的字符的行和字符索引GetLine从编辑控件中获得一行文本GetPasswordChar获得当用户输入文本时在编辑控件中显示的口令GetFirstVisibleLeLine决定在编辑控件中最顶部的可视的行
操作EmptyUndoBuffer重新设置(清除)编辑控件的撤销标记FmtLines设置在多行编辑控件中的软回车打开或关闭LimitText用户在输入文本时的文本长度限制LineFromChar获得包含指定字符索引的行的数目LineIndex获得在多行编辑控件中的某行的字符索引LineLength获得编辑控件中的行的长度LineScroll在多行编辑控件中滚动文本ReplaceSel用指定文本覆盖编辑控件中当前被选中的文本SetPasswordChar设置或清除当用户输入文本时在编辑控件中显示的口令SetRect设置多行编辑控件的带格式的矩形,并更新该控件SetRectNP设置多行编辑控件的带格式的矩形,而不必重新绘制SetSel在编辑控件中选定文本SetTabStops设置多行编辑控件的制表键停顿位SetReadOnly为编辑控件设置只读状态
剪贴板操作Undo撤销上一次的编辑控件操作Clear删除(清除)编辑控件中当前选中的文本Copy将编辑控件中的当前选中文本以CF_TEXT格式拷贝到剪贴板中Cut删除编辑控件中当前选中的文本,并将删除的文本以CF_TEXT格式拷贝到剪贴板中Paste在当前光标位置插入剪贴板内的文本。只有在剪贴板数据为CF_TEXT格式时才进行插入