MFC控件访问7种方法

MFC控件访问7种方法界面绘制编辑框ID:IDC_EDIT_A、IDC_EDIT_B、IDC_EDIT_C加法按钮ID:IDC_BUTTON_ADD1~7方法1:Ge

大家好,欢迎来到IT知识分享网。

界面绘制

MFC控件访问7种方法

编辑框ID:IDC_EDIT_A、IDC_EDIT_B、IDC_EDIT_C

加法按钮ID:IDC_BUTTON_ADD1~7

方法1:GetDlgItem()->GetWindowTextW()

const int N = 20; void CDemoDlg::OnBnClickedButtonAdd1() { TCHAR str1[N], str2[N], str3[N]; GetDlgItem(IDC_EDIT_A)->GetWindowTextW(str1, N); GetDlgItem(IDC_EDIT_B)->GetWindowTextW(str2, N); int a = _ttoi(str1); int b = _ttoi(str2); int c = a + b; _itow_s(c, str3, 10); GetDlgItem(IDC_EDIT_C)->SetWindowTextW(str3); }

方法2:GetDlgItemText()

void CDemoDlg::OnBnClickedButtonAdd2() { TCHAR str1[N], str2[N], str3[N]; GetDlgItemText(IDC_EDIT_A, str1, N); GetDlgItemText(IDC_EDIT_B, str2, N); int a = _ttoi(str1); int b = _ttoi(str2); int c = a + b; _itow_s(c, str3, 10); SetDlgItemText(IDC_EDIT_C, str3); }

TCHAR转CString:

TCHAR chs[N] = _T("Hello"); CString str; str.Format(_T("%s"), chs); OutputDebugString(str);

TCHAR*转CString:

CString str1, str2; GetDlgItemText(IDC_EDIT_A, str1); GetDlgItemText(IDC_EDIT_B, str2); TCHAR* chs1 = new TCHAR[N]; TCHAR* chs2 = new TCHAR[N]; TCHAR chs3[N]; chs1 = str1.GetBuffer(str1.GetLength()); chs2 = str2.GetBuffer(str2.GetLength()); int a = _ttoi(chs1); int b = _ttoi(chs2); int c = a + b; _itow_s(c, chs3, 10); SetDlgItemText(IDC_EDIT_C, chs3); str1.ReleaseBuffer(); str2.ReleaseBuffer();

方法3:GetDlgItemInt()

int a = GetDlgItemInt(IDC_EDIT_A); int b = GetDlgItemInt(IDC_EDIT_B); int c = a + b; SetDlgItemInt(IDC_EDIT_C, c);

方法4:关联数值类型变量

MFC框架为用户提供了在对话框控件和数据变量间交换数据的DDX/DDV(数据交换/数据验证)机制

DDX将数据成员变量和控件相连接,使得数据访问更加方便。

DDV用于数据校验,例如校验成员变量数值范围,并发出相应的警告。

MFC控件访问7种方法

UpdateData()函数接收一个BOOL类型参数,TRUE表示将控件中的数据传输到变量中,FALSE表示将变量中的数据传输到控件上。

UpdateData()并不直接完成DDX/DDV机制相关操作,而是通过调用一个DoDataExchange函数实现。

给编辑框IDC_EDIT_A关联值类型变量:选中编辑框-鼠标右键-添加变量

MFC控件访问7种方法

Dlg.h:

MFC控件访问7种方法

Dlg.cpp:

MFC控件访问7种方法

默认初始值为0。

设置数值范围:

MFC控件访问7种方法

同理,给另外两个编辑框关联int类型变量。

UpdateData(TRUE); m_edit_c_value = m_edit_a_value + m_edit_b_value; UpdateData(FALSE);
MFC控件访问7种方法

方法5:关联控件类型变量

MFC控件访问7种方法

void CDemoDlg::OnBnClickedButtonAdd5() { CString str1, str2; m_edit_a_control.GetWindowTextW(str1); m_edit_b_control.GetWindowTextW(str2); // OutputDebugString(str1 + str2); // Cstring 转 int int a = _ttoi(str1); int b = _ttoi(str2); int c = a + b; // int 转 CString CString str3; str3.Format(_T("%d"), c); m_edit_c_control.SetWindowTextW(str3); }

方法6:SendMessage()

void CDemoDlg::OnBnClickedButtonAdd6() { TCHAR chs1[N], chs2[N], chs3[N]; ::SendMessage(GetDlgItem(IDC_EDIT_A)->m_hWnd, WM_GETTEXT, N, (LPARAM)chs1); ::SendMessage(GetDlgItem(IDC_EDIT_B)->m_hWnd, WM_GETTEXT, N, (LPARAM)chs2); int a = _ttoi(chs1); int b = _ttoi(chs2); int c = a + b; _itow_s(c, chs3, 10); ::SendMessage(GetDlgItem(IDC_EDIT_C)->m_hWnd, WM_SETTEXT, 0, (LPARAM)chs3); }

方法7:SendDlgItemMessage()

void CDemoDlg::OnBnClickedButton7() { TCHAR chs1[N], chs2[N], chs3[N]; SendDlgItemMessage(IDC_EDIT_A, WM_GETTEXT, N, (LPARAM)chs1); SendDlgItemMessage(IDC_EDIT_B, WM_GETTEXT, N, (LPARAM)chs2); int a = _ttoi(chs1); int b = _ttoi(chs2); int c = a + b; _itow_s(c, chs3, 10); SendDlgItemMessage(IDC_EDIT_C, WM_SETTEXT, 0, (LPARAM)chs3); }

视频讲解

视频加载中…

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/58068.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信