文本编辑框
来源:互联网 发布:淘宝达人平台管理规范 编辑:程序博客网 时间:2024/05/01 03:37
在界面编程中,文本编辑框是使用频率最高的控件之一,为了方便操作,MFC提供了CEdit类来管理文本编辑框。
创建文本编译框有两种方式:
第一种、在对话框模式下,编辑资源文件,撰写创建对话框的脚本,可在表示对话框脚本的一对标识符BEGIN和END中间插入形如
EDITTEXT IDC_MYEDIT,81,112,71,14,ES_CENTER
的脚本。其中EDITTEXT表示插入了一个文本编辑框,IDC_MYEDIT是文本编辑框的ID号,81,112,71,14表示文本编辑框相对对话框的位置;ES_CENTER是对话框的属性,该熟悉表示文本水平居中对齐,可用“|”符号将若干熟悉联合。
从工具箱中拖入一个文本编辑框控件,实际上是通过可视化过程,由IDE解析鼠标操作来编写脚本,在属性对话框中设置各种属性,也是在编写这些脚本。
通过动态数据交换可以将CEdit类的一个对象与文本编辑框控件绑定在一起,DDX_Control(pDX, IDC_MYEDIT,m_MyEdit),m_MyEdit就是CEdit类的对象。
第二种、构造一个CEdit类的对象,利用CEdit::Create()创建一个文本编辑框,调用CEdit的成员函数可以设置文本编辑框的各种属性。
文本编辑框常用的操作:
1.GetWindowText(),获得文本编辑框中输入的内容。
2.SetLimitText(),设置文本编辑框能够输入最大字符数。
3.SetReadOnly(),设置文本编辑框为不可编辑。
4.GetSel(),获得当前选中文本编辑框中内容的起始和结束位置。
5.SetSel(),设置光标所在的位置,或者选中部分文本。
6.SetPasswordChar(),如果传入参数为非零的字符,则文本编辑框中显示以该非零字符代替,例如传入一个'*',用户输入的所有内容都以'*'显示,这就是密码模式,也是默认值,可以使用其他的字符代替。如果取消密码模式,只需要传入0.
7.Undo(),撤销之前的操作,在调用此函数之前,请先调用CanUndo判断此操作是否允许被撤销。
其他一些属性的设置,使用SetWindowLongPtr函数。
int nWindowLong = GetWindowLongPtr(m_hWnd,GWL_STYLE);
SetWindowLongPtr(m_hWnd,GWL_STYLE,nWindowLong | nStyle);
其中m_hWnd是文本编辑框的句柄,nStyle是属性值的组合,这些属性值包括:
1.ES_MULTILINE 多行文本编辑框
2.ES_WANTRETURN 允许回车换行
3.ES_NUMBER 只允许输入数字
修改文本编辑框边框的颜色是一件比较困难的事情,MFC提供的CEdit类只提供了对文本编辑框的功能操作,外观设置是MFC控件管理类的共同弱点,没有办法,我们只能自己重载CEdit类来修改边框颜色。
1、创建CEdit的派生类CDrawEdit
class CDrawEdit : public CEdit
{
DECLARE_DYNAMIC(CDrawEdit)
public:
CDrawEdit();
virtual ~CDrawEdit();
protected:
DECLARE_MESSAGE_MAP()
};
2、设置边框颜色
因为文本编辑框的边框是在非客户区域,所以要重载OnNcPaint()函数。
void CDrawEdit::OnNcPaint()
{
CRect rc;
GetWindowRect(&rc);
CRect rcWindow(0,0,rc.Width(),rc.Height());
CBrush brushFrame;
brushFrame.CreateSolidBrush(RGB(255,0,0));
CWindowDC dc(this);
dc.FrameRect(&rcWindow,&brushFrame);
}
可以定义一个成员变量来保存画刷的颜色值,定义一个成员函数设置此值,这样就可以通过函数来灵活的这是各种边框颜色。
文本颜色和文本字体以及文本编辑框的背景色可以在父类的OnCtlColor中设置
HBRUSH CMFCDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_MYEDIT)
{
pDC->SetTextColor(RGB(0,0,255)); //设置字体颜色
pDC->SelectObject(&m_Font); //设置字体样式
//设置背景色
pDC->SetBkMode(TRANSPARENT);
return CreateSolidBrush(RGB(0,255,0));
}
return hbr;
}
如果在OnCtlColor函数中添加了对静态文本框的设置,有可能会影响到文本框的效果。
- 文本编辑框
- 文本编辑框--调整文本编辑区域
- 文本编辑框--背景色
- 创建文本编辑框
- mfc使用文本编辑框
- 文本编辑框用法EditText
- 文本编辑框自动换行
- FCKeditor 文本编辑框设置
- EditText:文本编辑框
- 重写TEdit文本编辑框
- 03 EditText文本编辑框
- 仿微博富文本编辑框
- MFC文本编辑框
- TP文本编辑框
- summernote富文本编辑框
- 文本编辑
- 富文本编辑框的使用
- 文本编辑框设置圆角
- [技术讨论]英雄会后的乱谈
- 很不错的js 效果。据说是 火星人写的
- TextMode="MultiLine" 文本框为区域时,用MaxLength不能控制输入文字字数问题
- C++库大汇
- 进销存系统中如何处理采购退货
- 文本编辑框
- #pragma详解
- Javascript的IE和Firefox兼容性大集合
- 如何远程连接局域网内的SQL Server
- char...varchar...nchar...nvarchar...ntext
- XP windowns2003 双启动菜单恢复
- eclipse 常用快捷键
- Microsoft.XMLDOM 对象详解
- baidu排名不要做得太过火!