CWnd::GetDlgItemCWnd* GetDlgItem( int nID ) const;
void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;

返回值:

指向给定的控件或子窗口的指针。如果没有控件具有nID给出的整数ID,则返回NULL。

返回的指针可能是临时的,不能被保存以供将来使用。

参数:

nID 指定了要获取的控件或子窗口的标识符。
phWnd 指向子窗口的指针。

GetDlgItem:根据一个对话窗或一个控件的ID,返回一个指向这个对话窗或控件的对象的指针

void CGetRadioDlg::OnButtonok()
{// TODO: Add your control notification handler code hereCString str;CButton* Radiobutton = (CButton*)GetDlgItem(IDC_RADIO1 + m_Radio - 1);Radiobutton->GetWindowText(str);MessageBox(str);
}

拓展:MFC项目的Resource.h文件中定义了各种资源ID,如下图单选按钮的定义

疑问:

  • 宏定义:IDC_RADIO1对应1000
CWnd* GetDlgItem( int nID ) const;GetDlgItem(IDC_RADIO1 + m_Radio - 1)

( IDC_RADIO1 + m_Radio - 1 )是一个int型数值,也就是说在函数调用的时候会将 IDC_RADIO1 转换为 1000

但是在MFC中通过拖动添加按钮后会出现宏定义不连续的现象,即:

IDC_RADIO    1000
IDC_RADIO1    1002

是不是通过以下方式查找按钮会出现问题

void CGetRadioDlg::OnRadio1() {// TODO: Add your control notification handler code herem_Radio = 1;
}void CGetRadioDlg::OnRadio2() {// TODO: Add your control notification handler code herem_Radio = 2;
}void CGetRadioDlg::OnRadio3() {// TODO: Add your control notification handler code herem_Radio = 3;
}void CGetRadioDlg::OnRadio4() {// TODO: Add your control notification handler code herem_Radio = 4;
}
GetDlgItem(IDC_RADIO1 + m_Radio - 1)

还是程序重启后,会重新修改,待验证


如果想访问控件特有的功能,则可以尝试将GetDlgItem的返回值强制转换为控件所对应的类型

CButton* Radiobutton = (CButton*)GetDlgItem(IDC_RADIO1 + m_Radio - 1);
Radiobutton->GetWindowText(str);

不推荐用这种方法来访问控件的特有功能,因为MFC对这样的用法不太支持,有些情况下会产生严重错误,而有些情况下则不起任何作用

MFC:GetDlgItem相关推荐

  1. MFC:如何利用C++使得输出文本颜色、字体多变

    最近在使用MFC开发依款小程序,程序需要[根据一系列的条件来输出具有不同字体格式的文本],比如:蓝色.红色.楷体等. 在网上搜索了很多方法,均没法实现. 经过自己的仔细琢磨,终于找到了解决办法. [解 ...

  2. MFC:ListControl用法

    MFC:ListControl用法 以下未经说明,ListControl默认view风格为report. 1. 设置CListControl风格 LVS_ICON:为每个Item显示大图标: LVS_ ...

  3. MFC:使用剪贴板,怎么将内容复制到剪贴板

    http://www.limou.net/?p=593 MFC:使用剪贴板,怎么将内容复制到剪贴板 有的时候,我们的程序或许要将一些内容复制进剪贴板,以方便用户的需要. 例如,我所写的一个nod32免 ...

  4. MFC:项目移植详细实现(有图)

    MFC:项目移植详细实现(有图) 一.实现目标 二.实现背景 三.本地环境 四.实现步骤 一.实现目标   针对一个已有的界面复杂的mfc项目,移植到新建的mfc项目当中去,使其正常运行. 二.实现背 ...

  5. MFC中GetDlgItem以及SetDlgItem详解

    MFC的GetDlgItem()主要是获取对话框上的句柄,通过获取对话框上的句柄可以获取句柄上的信息等 GetDlgItem() 有一个参数,即对话框所要获取的句柄点的ID号 应用如下,比如,获取句柄 ...

  6. MFC中GetDlgItem()和GetWindowText()获取控件里面的数据并保存下来

    理解GetDlgItem()函数 GetDlgItem()作用 获取某个控件的指针 从函数名字分析: Dlg=Dialog=对话框.Item=一件一个 意思:获取对话框里面的某一个控件 从函数参数分析 ...

  7. 深入浅出MFC:DDX_Control本质探究

    注:以下以名为Test的对话框工程为例讲解 对话框程序中,如果我们有拖标准控件到界面中,并且有和控件类变量绑定,则会有 void CTestDlg::DoDataExchange(CDataExcha ...

  8. MFC:怎么将程序窗口最小化到系统托盘

    (一)原理 1.最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标. 2.恢复的原理:将窗口显示,再将托盘中的图片删除. (二)程序实现 1.自定义消息WM_SHOWTASK: #define WM ...

  9. MFC:移动对话框到右下角

    代码 在MFC中将dlg移动到右下角的代码如下: 先通过SystemParametersInfo获取屏幕宽度,再获取当前对话框的长高,在使用MoveWindow就OK了 // 移动到右下角 void ...

最新文章

  1. Python元组常用的操作
  2. 「ZJOI2016」大森林 解题报告
  3. 站在巨人的肩膀,2020我在使用和涉及到的开源项目
  4. 把 charles,Fiddler 证书安装到安卓根目录,解决安卓微信 7.0 版本以后安装证书也无法抓包问题,需要 root
  5. 老男孩IT教育38期面授班 学员邢伟的决心书
  6. 用python实现的的手写数字识别器
  7. 日均请求量1.6万亿次背后,DNSPod的秘密-国密DoH篇
  8. Angualr 加载速度慢,为页面初始化完成前添加loading
  9. vue3.0项目创建
  10. Atitit.编译原理与概论
  11. C语言IDE推荐code::blocks
  12. python之爬取中华诗词网
  13. 关于BOM表的一些事
  14. 山水印|竹林野茶:它,被称为茶叶中瑰宝,不止抗癌那么简单
  15. 智能对话 | 使用 Java实现 智能对话机器人
  16. 计算机可以实现u盘和硬盘格式化,“资源管理器”和“计算机”窗口都可以实现U盘和硬盘格式化...
  17. vue 3.0学习1
  18. 因为瞬间,所以永恒!
  19. R语言产生对角阵、次对角阵等矩阵及矩阵运算
  20. 2020-2021 年度广东省职业院校技能大赛网络搭建与应用竞赛

热门文章

  1. 《国富论》精髓:亚当·斯密提出的对后世影响深远的三个经济学理论:劳动分工理论、生产要素理论和宏观调控理论
  2. 第一周:手写数字识别
  3. 赚钱的小生意,VC对你没兴趣
  4. For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).
  5. 从神话诗歌到奇幻科学的人类探索史·《月亮》·精彩摘录
  6. Full Binary Tree 2014 SD第五届ACM大学生程序设计竞赛 F
  7. 再见PowerDesigner,这款国人开源的数据库设计工具Chiner真香
  8. 0608 高考 + 代码
  9. 金仓迁移到mysql的方法
  10. 说说如何利用 Python 的 requests 模块,从网络下载电子小说