03. MFC中的子类化,几种设置Edit文本的方法

需求:对话框中的Edit Control只能输入字母和数字。

解决方案:继承CEdit类,重写OnChar函数,输入合法则调用CEdit::OnChar,否则直接返回。

 

1. 右键项目-添加-新建项,选择图中的MFC类

 

 

 

2. 选则正确的基类,点确定

 

 

 

3. 资源视图里放一个Edit,右键-添加变量

 

 

 

4. 填写必要信息,点击完成

 

 

 

 

5. 继续右键Edit - 类向导 ,选则WM_CHAR消息,双击,确定

 

 

 

 

 

 6. 在自动生成的函数中填入逻辑,补上头文件CMyEdit2.h,运行即可。

void CMyEdit2::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) {
	if ('0' <= nChar && nChar <= '9' ||
		'a' <= nChar && nChar <= 'z' ||
		'A' <= nChar && nChar <= 'Z') {
		CEdit::OnChar(nChar, nRepCnt, nFlags);
	}
}

  

 

设置Edit文本的方法:

void CMFCApplication1Dlg::OnBnClickedButton1() {
	//方法1
	CWnd *pEdit = GetDlgItem(IDC_EDIT4);
	CString strText;	
	pEdit->GetWindowText(strText);
	AfxMessageBox(strText);

	//方法2
	GetDlgItemText(IDC_EDIT4, strText);
	AfxMessageBox(strText);

	//方法3
	TCHAR buff[MAXBYTE] = {};
	pEdit->SendMessage(WM_GETTEXT, MAXBYTE, (LPARAM)buff);
	AfxMessageBox(buff);

	//方法4
	m_strEditText = L"Heeeeee";
	UpdateData(FALSE);//FALSE则调用SetWindowText,TRUE则GetWindowText
	AfxMessageBox(m_strEditText);
}

方法4的操作如下:

1. 右键Edit Control - 添加控制变量

 

 

2. 之后操作变量m_strEditText即可,要调用UpdateData(FALSE);//FALSE则调用SetWindowText,TRUE则GetWindowText

3. 右键-类向导-成员变量,可以看到映射的成员。图中第一个时控件子类化的映射,第二个是文本的映射。

 

posted @ 2020-07-02 09:10  八转达人  阅读(815)  评论(0编辑  收藏  举报