CEdit使用总结

基本用法

常用属性
1.Readonly    ---  只读,用户不可输入但可以通过代码SetWindowText设置内容
2.Number      ---  只能输入数字
3.Password    ---  输入以密码符号显示
4.Multiline   ---  支持多行
5.Want Return ---  接受Enter键换行
全部Edit Style为Edit Control Styles
注意:有些风格是可以通过SetWindowLong更改的,有些则不可以,可以修改的都有标出。
以下代码展示通过SetWindowLong修改CEdit风格,增加ES_NUMBER:
DWORD dwStyle = ::GetWindowLong(m_edit.GetSafeHwnd(), GWL_STYLE);
dwStyle |= ES_NUMBER;
::SetWindowLong(m_edit.GetSafeHwnd(), GWL_STYLE, dwStyle);
获取与设置内容
GetWindowText
SetWindowText
当Multiline为True时,要想通过SetWindowText实现换行,需加字符串"\r\n".
与数值变量绑定
通过Class Wizard操作如下图所示

通过手工添加代码如下
void CTestEditDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_nEdit);
	DDV_MinMaxFloat(pDX, m_nEdit, 0, 100);
}
使用关联的数值变量
使用前请使用UpdateData:
UpdateData(TRUE)   ---- data is being retrieved
UpdateData(FALSE)  ---- dialog box is being initialized使用示例如下:
// UpdateData(TRUE)返回FALSE时,会弹出对话框提示出错,UpdateData函数自带的
if (FALSE == UpdateData(TRUE))	
{
    return;  //标明更新数据有错,可能是超过设定的大小范围或含有字母等非Number字符导致错误
}
CString cstr;
cstr.Format(TEXT("%d"), m_nEdit)
AfxMessageBox(cstr);

动态创建CEdit控件

代码如下:
CEdit *pMyEdit = NULL;

pMyEdit = new CEdit();
// 创建
// WS_EX_CLIENTEDGE --- 3D边框,否则是黑色边框和对话框上静态创建的CEdit不一致
pMyEdit->CreateEx(
	WS_EX_CLIENTEDGE,
	TEXT("EDIT"),
	TEXT(""),
        WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL,
        10,10,100,100,
	this->GetSafeHwnd(),
	NULL); 
//设置和对话框一样的字体
pMyEdit->SetFont(this->GetFont());
很多人会问:为什么不用pMyEdit->Create创建而用CreateEx
在创建完后再通过SetWindowLong增加WS_EX_CLIENTEDGE风格
这是不可取的,因为该风格在窗口创建完后不可修改
pMyEdit = new CEdit();
pMyEdit->Create(
	WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL | ES_MULTILINE,
	CRect(0, 0, 100, 20),
	this,
	1000);

// 试图在创建完后增加WS_EX_CLIENTEDGE风格
// 失败,因为该Style在控件创建完后不可更改
DWORD dwExStyle = ::GetWindowLong(pMyEdit->GetSafeHwnd(), GWL_EXSTYLE);
dwExStyle |= WS_EX_CLIENTEDGE;
::SetWindowLong(pMyEdit->GetSafeHwnd(), GWL_EXSTYLE, dwExStyle);
pMyEdit->ModifyStyleEx(0, WS_EX_CLIENTEDGE);

// 设置和对话框一样的字体
pMyEdit->SetFont(this->GetFont());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值