Windows编程基础--第8节 MFC对话框控件访问的七种方法(上)
来源:互联网 发布:海关10月进出口数据 编辑:程序博客网 时间:2024/05/21 12:45
MFC对话框控件具有以下三种访问方式(当然还有很多别的访问方式,今天时间紧急,先学这三种),分别是:
第一种
GetDlgItem()->GetWindowText()
GetDlgItem()->SetWindowText()第二种
GetDlgItemText()第三种
GetDlgItemInt()
SetDlgItemInt()
1.新建一个对话框项目
参见上节,我们这节采用VS2010编写一个身高体重计算器(BMI),参见 第二节;
2.布局
编辑布局如下:
3.实现方法
双击确认按钮,编辑其点击消息处理函数;
void Cday08Dlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 int nHeight= GetDlgItemInt(IDC_EDIT_SG,NULL,TRUE); double dHeight = nHeight / 100.00; int nWeight = GetDlgItemInt(IDC_EDIT_TZ,NULL,TRUE); double bmi = nWeight/(dHeight*dHeight); char buf[28]; sprintf(buf, "%.3f", bmi); SetDlgItemText(IDC_EDIT_BMI,buf);}
这里可以看见使用到了GetDlgItemInt,这就是直接获取文本框的值,并返回为整形,然后用sprintf(buf, “%.3f”, bmi);将double类型值转换成字符串,并通过SetDlgItemText将字符串的值设置到ID为IDC_EDIT_BMI的文本框上;
4.编译运行
估计很多人会像我一样,VS2010会报这样的错误:
这是因为我们创建的项目的字符集为Unicode,不允许这样转换,这时我们只要将解决方案中右击项目名“day09”->“属性”->“配置属性”->”常规”->”字符集”->选择“使用多字节字符集”就好了,如下:
这时就可以通过编译,运行结果如下:
5.其他方法
再次编辑“确认”按钮的点击消息处理函数;
第二种
void Cday08Dlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 TCHAR tcHeight[10], tcWeight[10]; GetDlgItem(IDC_EDIT_SG)->GetWindowText(tcHeight,10); GetDlgItem(IDC_EDIT_TZ)->GetWindowText(tcWeight,10); int nHeight = _ttoi(tcHeight); double dHeight = nHeight / 100.00; int nWeight = _ttoi(tcWeight); double bmi = nWeight/(dHeight * dHeight); char buf[28]; sprintf(buf, "%.3f", bmi); GetDlgItem(IDC_EDIT_BMI)->SetWindowText(buf);}
可以看见,这里用到了GetDlgItem(IDC_EDIT_SG)->GetWindowText(tcHeight,10)方法,这个方法的过程就是先通过GetDlgItem(IDC_EDIT_SG)获取到控件对象,然后调用控件的GetWindowText(tcHeight,10)方法来获取控件的显示文本;
第三种
void Cday08Dlg::OnBnClickedOk(){ TCHAR tcHeight[10], tcWeight[10] , tcBMI[10]; GetDlgItemText(IDC_EDIT_SG,tcHeight,10); GetDlgItemText(IDC_EDIT_TZ,tcWeight,10); int nHeight = _ttoi(tcHeight); double dHeight = nHeight / 100.00; int nWeight = _ttoi(tcWeight); double bmi = nWeight/(dHeight * dHeight); char buf[28]; sprintf(buf, "%.3f", bmi); SetDlgItemText(IDC_EDIT_BMI,buf);}
可以看见,这里直接用到了GetDlgItemText(IDC_EDIT_SG,tcHeight,10)方法,这个方法的过程就是先通过GetDlgItem(IDC_EDIT_SG)获取到控件对象,然后调用控件的GetWindowText(tcHeight,10)方法来设置控件的显示文本;
虽然上面三种方法最终结果是一样的,但是其本质还是有所区别的
项目源码可以访问我的码云
- Windows编程基础--第8节 MFC对话框控件访问的七种方法(上)
- Windows编程基础--第9节 MFC对话框控件访问的七种方法(下)
- 利用MFC 对话框访问控件的七种方法
- Windows程序设计 访问对话框控件的七种方法(1)
- Windows程序设计 对话框控件访问的七种方法(2)
- Windows程序设计 对话框控件访问的七种方法(3)
- 访问对话框的七种方法(上)
- Windows编程基础--第5节 MFC对话框程序
- MFC访问对话框控件的7种方法
- Windows编程基础--第13节 MFC之图片控件
- 对话框控件访问的七种方式
- 对话框控件的七种访问方式
- Windows编程基础--第14节 MFC之文件对话框CFileDialog
- MFC中访问控件的七种方法,摘自孙鑫老师MFC视频
- 访问对话框的七种方法(中)
- 访问对话框的七种方法(下)
- VS2010/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- VS2010/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- 实习项目回顾
- ubuntu 中文安装后需要卸载的中文字体
- 优先队列——A-B
- 在阿里云服务器(9.9学生版)上Cmake 构建Rosetta,并仅编译AbinitioRelax
- 6. ZigZag Conversion leetcode
- Windows编程基础--第8节 MFC对话框控件访问的七种方法(上)
- 01-面向对象(接口的应用)1 01-面向对象(接口的应用)2 01-面向对象(接口的应用)3
- 二分法做平方根
- java 之 静态泛型方法
- C语言的静态库与共享库
- Note-WebAPI
- 【JZOJ 5413】【NOIP2017提高A组集训10.22】清兰
- Hibernate_day02
- java 模拟terminal通过docker remote api连接docker容器