登录【网站注册】点击左边“微信账号登陆”图标,微信扫描即自动注册并登陆
搜索
查看: 1310|回复: 0

[技术文章] MFC编辑控件CEdit使用总结

[复制链接]
发表于 2013-7-4 16:39:27 | 显示全部楼层 |阅读模式
MFC中编辑控件的初始化或者文本内容的获取一般都是通过 CWnd 的成员函数来完成,比如 GetWindowText,SetWindowText,GetDlgItemText,SetDlgItemText等。比较简单的方法是把控件与对话框的成员变量进行关联。其他的方法就是利用SDK编程 SendMessage 函数发送消息 WM_GETTEXT,WM_SETTEXT来进行的。

一、利用Cwnd成员函数GetWindowText和SetWindowText

" int GetWindowText( LPTSTR lpszStringBuf,int nMaxCount) const;
void GetWindowText( CString& rString ) const;
void SetWindowText( LPCTSTR lpszString );

GetWindowText有两个版本,一个是两个参数另外一个是一个参数。
第一个版本第一个参数时LPTSTR指针,第二个是字符串长度。
第二个版本中参数为CString。

SetWindowText只有一个参数,形参虽然是LPCTSTR但是貌似实参既可以是LPCTSTR或者是CString。
MSDN是这样说的:Points to a CString object or null-terminated string to be used as the new title or control text.
" wchar_t w_txt[32];
Cstring cstr_txt;
GetDlgItem(IDC_EDIT1)->GetWindowText(w_txt,32);
GetDlgItem(IDC_EDIT1)->GetWindowText(cstr_txt);

GetDlgItem(IDC_EDIT1)->SetWindowText(cstr_txt);
GetDlgItem(IDC_EDIT1)->SetWindowText(w_txt);


二、利用CWnd成员函数GetDlgItemText和SetDlgItemText
GetDlgItemText也有两个版本,他们用法基本和GetWindowText、SetWindowText差不多。
"  int GetDlgItemText( int nID,LPTSTR lpStr,int nMaxCount ) const;
int GetDlgItemText( int nID,CString& rString ) const;
void SetDlgItemText(int nID, LPCTSTR lpszString );


三、利用CWnd成员函数SetDlgItemInt
void SetDlgItemInt( int nID, UINT nValue,BOOL bSigned = TRUE );

nID为控件ID标识
nValue为整型值
bSigned用于指明整型值是有符号还是没有符号,TRUE(默认值)标识nValue有符号,FALSE表示没有符号。
"  UINT GetDlgItemInt( int nID, BOOL* lpTrans = NULL, BOOL bSigned = TRUE ) const;

返回值为nID控件的整型值
nID为控件ID标识
lpTrans 用户监测错误
bSigned 指明是否带符号

四、控件与成员变量相关联
将编辑控件与对话框类的成员变量相关联,然后通过这些成员变量来检索和设宜编辑框的文本,这是最简单的访问控件的方式。

这个一般通过类向导来完成,也可以手工添加代码。

1)在对话框的头文件中增加成员变量,类型可以是int、double、float、CString等

2)在对话框构造函数中对成员变量进行初始化。

3)在 DoDataExchange 函数中实现对话框控件与类成员变量进行关联。DDX关联控件ID与成员变量,DDV可以设置变量接受的范围。
"  void CPenWidthsDlg:oDataExchange(CDataExchange* pDX)
{
CDialog:oDataExchange(pDX);
DDX_Text(pDX, IDC_THIN_PEN_WIDTH, m_nThinWidth);// m_nThinWidth 为 int 变量
DDV_MinMaxInt(pDX, m_nThinWidth, 1, 20);
DDX_Text(pDX, IDC_THICK_PEN_WIDTH, m_nThickWidth);
DDV_MinMaxInt(pDX, m_nThickWidth, 1, 20);
}


提示:
MFC提供了多种以DDX_为前级的函数,这些函数分别用于不同控件的数据交换。
DDX——Dialog Data Exchange ,对话框数据交换;
DDV——Dialog Data Validation ,对话框数据校验。

4)DoDataExchange是通过调用UpdateData来执行的。通过调用后者来初始化对话框控件或从对话框获取数据. 也就是说,为了让数据交换生效,就必须去调用DoDataExchange 函数. 但程序代码不是直接调用这
个函数,而是需要去调用UpdateData 这个函数。
" BOOL UpdateData(BOOL bSaveAndValidate = TRUE );


参数bSaveAndValidate为TRUE是获取对话控制值,为FALSE用变量值初始化对话框。
优胜专注教学 技术实力最强 www.ysug.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


快速回复 返回顶部 返回列表