关闭

Windows编程基础--第8节 MFC对话框控件访问的七种方法(上)

标签: mfc控件
1994人阅读 评论(0) 收藏 举报
分类:

MFC对话框控件具有以下三种访问方式(当然还有很多别的访问方式,今天时间紧急,先学这三种),分别是:

第一种
GetDlgItem()->GetWindowText()
GetDlgItem()->SetWindowText()

第二种
GetDlgItemText()

第三种
GetDlgItemInt()
SetDlgItemInt()

1.新建一个对话框项目

参见上节,我们这节采用VS2010编写一个身高体重计算器(BMI),参见 第二节

2.布局

编辑布局如下:
这里写图片描述

EDIT名称 ID
身高 IDC_EDIT_SG
体重 IDC_EDIT_TZ
BMI IDC_EDIT_BMI

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)方法来设置控件的显示文本;

虽然上面三种方法最终结果是一样的,但是其本质还是有所区别的

项目源码可以访问我的码云

0
0
查看评论

MFC学习笔记之:7种访问对话框控件的方式

7种访问对话框控件的方式,他们分别是:·GetDlgItem()->Get(Set)WindowText()·Get(Set)DlgItemText()·Get(Set)DlgItemInt()·将控件与整型变量相关联()·将控件与控件变量相关...
  • a408789699
  • a408789699
  • 2011-03-31 14:06
  • 2765

MFC访问对话框控件的7种方法

MFC访问对话框控件的一些常用方法
  • pengz0807
  • pengz0807
  • 2015-08-15 20:50
  • 603

Windows编程基础--第9节 MFC对话框控件访问的七种方法(下)

上节学习了MFC访问控件的三种方法,这节我们来学习剩下的四种方法,四种方法分别如下: 第四种 把控件和整型变量相关联 第五种 把控件和控件变量相关联 方法四 把控件和整型变量相关联1. 创建项目打开上节用到的day08项目,切换到资源视图,添加一个按钮“方法4”,我们在此按...
  • qq_25549309
  • qq_25549309
  • 2017-10-25 19:44
  • 1936

子对话框如何访问主对话框中的控件

在使用mfc的时候经常遇到自定义类访问主对话框控件的问题,例如自定义类中的方法要输出一段字符串到主对话框的EDIT控件、控制对话框的进度条等。    要在自定义的类中访问主对话框空间,须获得主对话的指针。主对话框的对象在app类的InitInstance()方法中...
  • u010258235
  • u010258235
  • 2013-08-16 17:52
  • 996

MFC(继续对话框,孙鑫C++第八讲笔记整理)

1.如何改变按纽的字体?在对话框的属性中改变字体的属性即可   2.逃跑按纽的实现    1.从CButton派生一个类,CWeixinBtn  2.将IDC_EDIT1关联成员变量m_btn1,类型为CWeixinBtn,注意要包含头文件。 &#...
  • u012377333
  • u012377333
  • 2014-11-04 20:00
  • 993

MFC对话框中的编辑控件的7种操作方式

//第一种方式          int num1,num2,num3;          char ch1[10],ch2[10],c...
  • u010879420
  • u010879420
  • 2016-10-09 17:59
  • 638

MFC 学习之 模态对话框图片控件上作图

首先说明一点,onpaint 是更新面板用的,作图的话应在控件上进行。 新建 MFC 对话框工程,面板上添加按钮 IDC_START , IDC_SHOW , IDC_STOP 添加两个对话框,ID 分别设为(简写)ld 和 cd。 ld 上添加三个图片控件,并且每一个均关联一个 CSTATI...
  • u010477528
  • u010477528
  • 2015-02-15 14:49
  • 1629

MFC里在对话框下的Static text控件里画网格

1.新建一个MFC工程,在资源视图->Dialog下新建一个对话框ID为IDC_DIALOG1,在工具箱里为该对话框添加Static text ,并设置ID为IDC_TEXT,在类向导里添加一个类ControlDlg类继承于CDIALOGEX; 2.项目->添加类 添加一个Graph类继...
  • pudongdong
  • pudongdong
  • 2016-11-05 22:09
  • 1196

windows编程---对话框

用过windows的对于对话框并不陌生,其主要用于完成特定的任务,是人机交互的一个方式。对话框可以分为两种:模态对话框和非模态对话框。 模态对话框也可分为两种,一种是系统方式的模态对话框,这种对话框只有当其结束时,你才能访问其他窗口,例如单击关机按钮时,出现的包含待机,重启,关机三个按钮的对话框。...
  • zzh19811015
  • zzh19811015
  • 2012-08-28 11:34
  • 1037

MFC访问对话框控件的几种方式

1、通过对话框访问 /*******************************************/ int num1,num2,num3; CString str1,str2,str3; GetDlgItem(IDC_EDIT1)->GetWindowText(str1);...
  • h_wlyfw
  • h_wlyfw
  • 2014-03-07 12:11
  • 1403
    个人资料
    • 访问:40756次
    • 积分:698
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条
    文章分类