我们使用的编译环境是VC++6.0。首先,在MFC Wizard(exe)下建立基于对话框的工程,取名为Mybole。
在对话框上放置三个静态文本框, 三个编辑框。如图:
现在实现一个简单的功能:即在Number1, 和Number2中输入数字,点击Add按钮,将两个数相加的结果显示在Number3中。
在Add按钮的消息相应函数OnBtnAdd()中添加一下代码,可实现两个数的相加,体会获取和设置控件文本的方法:
方法一:利用CDialog 的成员函数GetDlgItem(), GetWindowText()和SetWindowText();
int num1, num2, num3;
char ch1[10], ch2[10], ch3[10];
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1, 10); //获取文本信息
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2, 10);
num1 = atoi(ch1); //字符转换为数字
num2 = atoi(ch2);
num3 = num1 + num2;
itoa(num3, ch3, 10);
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3); //获取窗口指针, 设置窗口(控件)文本*/
方法二:利用GetDlgItemText()和SetDlgItemText();
int num1, num2, num3;
char ch1[10], ch2[10], ch3[10];
GetDlgItemText(IDC_EDIT1, ch1, 10); //GetDlgItemText = GetDlgItem + GetWindowText
GetDlgItemText(IDC_EDIT2, ch2, 10);
num1 = atoi(ch1); //字符转换为数字
num2 = atoi(ch2);
num3 = num1 + num2;
itoa(num3, ch3, 10);
SetDlgItemText(IDC_EDIT3, ch3); //SetDlgItemText = GetDlgItem + SetWindowText*/
方法三:利用GetDlgItemInt(), 和SetDlgItemInt();
int num1, num2, num3;
num1 = GetDlgItemInt(IDC_EDIT1); //获取控件文本, 做整数返回
num1 = GetDlgItemInt(IDC_EDIT2);
num3 = num1 + num2;
SetDlgItemInt(IDC_EDIT3, num3);
方法四:在类向导中分别为三个编辑框设置int型成员变量,m_num1, m_num2, m_num3;
UpdateData(); //将值从控件传到成员变量
m_num3 = m_num1 + m_num2;
UpdateData(FALSE); //将值从成员变量传给控件
方法五:在类向导中分别为三个编辑框设置control型成员变量,m_edit1, m_edit2, m_edit3; 利用CEdit类的成员函数
int num1, num2, num3;
char ch1[10], ch2[10], ch3[10];
m_edit1.GetWindowText(ch1, 10); //CEdit 的成员函数, 获取文本信息
m_edit2.GetWindowText(ch2, 10);
num1 = atoi(ch1); //字符转换为数字
num2 = atoi(ch2);
num3 = num1 + num2;
itoa(num3, ch3, 10);
m_edit3.SetWindowText(ch3);
方法六:利用Windows API, 发送信息给操作系统,实现对控件内容修改
int num1, num2, num3;
char ch1[10], ch2[10], ch3[10];
//发送信息的三种方式
::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 10, (LPARAM)ch1);
::SendMessage(m_edit2.m_hWnd, WM_GETTEXT, 10, (LPARAM)ch2);
num1 = atoi(ch1); //字符转换为数字
num2 = atoi(ch2);
num3 = num1 + num2;
itoa(num3, ch3, 10);
m_edit3.SendMessage(WM_SETTEXT, 0, (LPARAM)ch3);
方法七:利用Windows API, 发送信息给操作控件,实现对控件内容修改
int num1, num2, num3;
char ch1[10], ch2[10], ch3[10];
SendDlgItemMessage(IDC_EDIT1, WM_GETTEXT, 10, (LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 10, (LPARAM)ch2);
num1 = atoi(ch1); //字符转换为数字
num2 = atoi(ch2);
num3 = num1 + num2;
itoa(num3, ch3, 10);
SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 10, (LPARAM)ch3);
通过以上七种方法的学习,可以体会到获取控件文本的方法,从多个方向学习Windows API 以及MFC类库。也可以由上述方法拓展,上手其他空间,做到触类旁通。