CEdit编辑控件

CEdit从CWnd继承了重要的功能,要在CEdit对象中设置或获取文本,使用CWnd成员函数SetWindowText和GetWindowText,可以设置和得到编辑控件的全部内容,即使它是一个多行控件。如果编辑控件是多行的,使用CEdit成员函数GetLine,SetSel,GetSel和ReplaceSel来获取和写入控件的部分文本。

为了让编辑框控件接受换行符,必须设置该控件支持多行输入这一属性。

要注意的地方:若在对话框的OnInitDialog()中设置焦点到编辑框控件上,OnInitDialog需返回FALSE。

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('*'));//作为密码输入控件使用

	<strong>return FALSE;  // 除非将焦点设置到控件,否则返回 TRUE</strong>
}

CEdit::Create()用来创建编辑控件,并将其与Cedit对象关联。

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_OEMCONVERT输入到编辑控件的文本将被从ANSI字符集转换到OEM字符集,然后转换回ANSI字符集。这使得在应用程序调用Windows的AnsiToOem函数以把编辑控件中的ANSI字符串转换为OEM字符时,能够进行正确的字符转换。这个风格对包含文件名的编辑控件最有用。

ES_PASSWORD在编辑控件中输入字符时,将所有的字符显示为星号(*)。应用程序可以通过SetPasswordChar成员函数来改变显示的字符。

ES_READONLY:编辑框为只读。

ES_WANTRETURN当用户在多行编辑控件中输入文本时,如果按下了ENTER键,则插入回车换行符。这个风格对单行编辑控件不起作用。

CEdit成员:

构造函数

CEdit 构造一个CEdit控件对象
Create 创建一个Windows编辑控件,并将其与CEdit对象连接。

属性

CanUndo 决定一个编辑控件操作是否能够被撤销
GetLineCount 获得多行编辑控件中的行数
GetModify 决定编辑控件的内容是否被修改
SetModify 为编辑控件设置或清除修改标记
GetRect 为编辑控件获取格式化的矩形
GetHandle 获得为当前多行编辑控件分配的内存的句柄
SetHandle 设置为多行编辑控件使用的本地内存的句柄
SetMargins 为CEdit设置左边和右边的空白边界
GetMargins 获得为CEdit设置左边和右边的空白边界
SetLimitText 设置CEdit能够容纳的文本的最大量
GetLimitText 获得CEdit能够容纳的文本的最大量
PosFromChar 获得指定字符索引的左上角的坐标
CharFromPos 获得最靠近指定位置的字符的行和字符索引
GetLine 从编辑控件中获得一行文本
GetSel 从编辑控件中获得所选中文本的位置

GetPasswordChar 获得当用户输入文本时在编辑控件中显示的口令
GetFirstVisibleLeLine 决定在编辑控件中最顶部的可视的行

操作

EmptyUndoBuffer 重新设置(清除)编辑控件的撤销标记
FmtLines 设置在多行编辑控件中的软回车打开或关闭
LimitText 用户在输入文本时的文本长度限制
LineFromChar 获得包含指定字符索引的行的数目
LineIndex 获得在多行编辑控件中的某行的字符索引
LineLength 获得编辑控件中的行的长度
LineScroll 在多行编辑控件中滚动文本
ReplaceSel 用指定文本替换编辑控件中当前被选中的文本
SetPasswordChar 设置或清除当用户输入文本时在编辑控件中显示的口令
SetRect 设置多行编辑控件的带格式的矩形,并更新该控件
SetRectNP 设置多行编辑控件的带格式的矩形,而不必重新绘制
SetSel 在编辑控件中选中文本,SetSel(-1)将光标移动到文本末尾,SetSel(0)将光标移动到文本开头
SetTabStops设置多行编辑控件的制表键停顿位
SetReadOnly 为编辑控件设置只读状态

剪贴板操作

Undo 撤销上一次的编辑控件操作
Clear 删除(清除)编辑控件中当前选中的文本
Copy 将编辑控件中的当前选中文本以CF_TEXT格式拷贝到剪贴板中
Cut 删除编辑控件中当前选中的文本,并将删除的文本以CF_TEXT格式拷贝到剪贴板中
Paste 在当前光标位置插入剪贴板内的文本。只有在剪贴板数据为CF_TEXT格式时才进行插入

下面是一组可能的消息映射入口,以及在何种情况下向父类发送的描述:
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 用户单击了编辑控件中的垂直滚动条,父窗口在屏幕更新之前被通知。

可以利用CWnd::GetWindowText()/SetWindowText()来获得/设置编辑控件中的文本。

转载出处:http://baike.baidu.com/link?url=3CxMnrlXUfzd9pVMQpk0_YMy50-DZRlfg8k74-gqMmmgOshHngR-p98XBmgNIJg5QzMjlXcQb711WuvV_hf70a

                    http://blog.sina.com.cn/s/blog_4520b87a0100c6pb.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值