二,访问控件的七种方式–网课笔记
法一:
GetDlgItem(控件id)->GetWindowText(接收的变量,最大长度)
GetDlgItem(控件id)->SetWindowText(传的数据)
void Cmfc02demoDlg::OnBnClickedButton1()
{
TCHAR ch1[12], ch2[12], ch3[12];//用来保存输入的字符串
int num1, num2, num3;
//拿到编辑框GetDlgItem(控件id)-> 获取里面的内容GetWindowTextW(接收的变量,最大长度)
GetDlgItem(IDC_EDIT1)->GetWindowTextW(ch1,12);
GetDlgItem(IDC_EDIT2)->GetWindowTextW(ch2, 12);
num1 = _ttoi(ch1);
num2= _ttoi( ch2 );
num3 = num1 + num2;
//将num3作为十进制数转换为字符类型赋值给ch3
_itot_s(num3,ch3, 10);
//修改里面的内容SetWindowTextW(传的数据)
GetDlgItem(IDC_EDIT3)->SetWindowTextW(ch3);
}
法二:
GetDlgItemText(控件id,接受数据的变量,最大长度)
SetDlgItemText(控件id,传数据的变量)
void Cmfc02demoDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
TCHAR ch1[12], ch2[12], ch3[12];//用来保存输入的字符串
int num1, num2, num3;
//GetDlgItemText(控件id,接受数据的变量,最大长度)
GetDlgItemText(IDC_EDIT1,ch1,12);
GetDlgItemText(IDC_EDIT2, ch2,12);
num3 = _ttoi(ch1) + _ttoi(ch2);
_itot_s(num3, ch3, 10);
//SetDlgItemText(控件id,传数据的变量)
SetDlgItemText(IDC_EDIT3, ch3);
}
法三:
GetDlgItemInt(ID)
以整数形式返回根据id获得的控件的数据
SetDlgItemInt(ID,数值)
将整数类型的数据传给id指定的控件
void Cmfc02demoDlg::OnBnClickedButton3()
{
int num1, num2;
num1=GetDlgItemInt(IDC_EDIT1);
num2 = GetDlgItemInt(IDC_EDIT2);
SetDlgItemInt(IDC_EDIT3, num1 + num2);
}
关联使用的四个函数:
DoDataExchange()做数据关联
DDX_xxxx() 做关联的
DDV_xxxx() 做验证的
UpdateData()更新关联的数据
UpdateData(TRUE) :将控件里的数据关联到变量里
UpdateData(FALSE):将变量的值同步到控件里
法四:
把控件和整形变量相关联
为三个编辑框分别添加变量m_num1, m_num2和 m_num3,为按钮添加事件,即可在cpp文件中直接获取值 。
取值之前需调用UpdateData(True);同步控件的值到变量里;计算后,需通过UpdateData(FALSE);将变量的值同步进控件。
事件内容如下:
void Cmfc02demoDlg::OnBnClickedButton4()
{
UpdateData(TRUE);
m_num3 = m_num1 +m_num2;
UpdateData(FALSE);
}
法五:
把控件和控件变量相关联
GetWindowText(接收数据的变量,数据长度最大)
SetWindowText(待传的数据)
先为编辑框分别添加控件,控件变量名为:m_edit1,m_edit2,m_edit3;
然后通过控件调用GetWindowText()方法 获取控件内容,随后做处理
最后通过控件调用SetWindowText()方法 修改控件内容
void Cmfc02demoDlg::OnBnClickedButton5()
{
// TODO: 在此添加控件通知处理程序代码
int num1, num2, num3;
TCHAR ch1[12], ch2[12], ch3[12];
m_edit1.GetWindowText(ch1,12);
m_edit2.GetWindowText(ch2, 12);
num3 = _ttoi(ch2) + _ttoi(ch1);
_itot_s(num3, ch3, 10);
m_edit3.SetWindowText(ch3);
}
法六:
::SendMessage(控件的窗口句柄,消息,数据长度,数据)
LPARAM:数据作为消息的附加参数类型
void Cmfc02demoDlg::OnBnClickedButton6()
{
int num1,num2;
TCHAR ch1[12], ch2[12], ch3[12];
::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 12, (LPARAM)ch1);
::SendMessage(GetDlgItem(IDC_EDIT2)->m_hWnd, WM_GETTEXT, 12, (LPARAM)ch2);
_itot_s((_ttoi(ch1) + _ttoi(ch2)), ch3,10);
::SendMessage(GetDlgItem(IDC_EDIT3)->m_hWnd, WM_SETTEXT,12, (LPARAM)ch3);
}
法七:
::SendDlgItemMessage(当前窗口句柄,控件id,消息id,数据长度,数据)
数据长度,数据 作为消息的附加信息进行传递
void Cmfc02demoDlg::OnBnClickedButton7()
{
int num1, num2;
TCHAR ch1[12], ch2[12], ch3[12];
::SendDlgItemMessage(m_hWnd, IDC_EDIT1, WM_GETTEXT, 12, (LPARAM)ch1);
::SendDlgItemMessage(m_hWnd, IDC_EDIT2, WM_GETTEXT, 12, (LPARAM)ch2);
_itot_s((_ttoi(ch1) + _ttoi(ch2)), ch3, 10);
::SendDlgItemMessage(m_hWnd, IDC_EDIT3, WM_SETTEXT, 12, (LPARAM)ch3);
}
SendDlgItemMessage(控件id、消息id,数据长度,数据)
void Cmfc02demoDlg::OnBnClickedButton7()
{
int num1, num2;
TCHAR ch1[12], ch2[12], ch3[12];
SendDlgItemMessage( IDC_EDIT1, WM_GETTEXT, 12, (LPARAM)ch1);
SendDlgItemMessage( IDC_EDIT2, WM_GETTEXT, 12, (LPARAM)ch2);
_itot_s((_ttoi(ch1) + _ttoi(ch2)), ch3, 10);
SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 12, (LPARAM)ch3);
}