mfcgetdlgitem_mfc queue

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

CWnd::GetDlgItem

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

Jetbrains全家桶1年46,售后保障稳定

返回值:

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

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

参数:

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

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

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

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

mfcgetdlgitem_mfc queue

疑问:

  • 宏定义: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 here
	m_Radio = 1;
}

void CGetRadioDlg::OnRadio2() {
	// TODO: Add your control notification handler code here
	m_Radio = 2;
}

void CGetRadioDlg::OnRadio3() {
	// TODO: Add your control notification handler code here
	m_Radio = 3;
}

void CGetRadioDlg::OnRadio4() {
	// TODO: Add your control notification handler code here
	m_Radio = 4;
}
GetDlgItem(IDC_RADIO1 + m_Radio - 1)

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


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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234117.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Vlc for Android 全面阐述

    Vlc for Android 全面阐述

  • 聊聊IT外包公司(外包公司的运作模式和赚钱之道)

    聊聊IT外包公司(外包公司的运作模式和赚钱之道)聊聊IT外包公司(外包公司的运作模式和赚钱之道)外包分类1.人力外包2.项目外包先说说人力外包比如:华为公司很大,有很多项目在做,但是一些次要的,或者非核心的项目,如果华为公司自己招兵买马的话,那么成本会很高,像员工的社保,公积金等等这些都要华为自己掏钱,这时候,华为公司就会想了,能不能把这部分次要的项目包出去,包给其他公司,交给别人去做,这样的话,直接付款给外包公司就行了,项…

  • Leetcode 差分数组的应用「建议收藏」

    Leetcode 差分数组的应用「建议收藏」题目1解法这个题目普通解法参见这里不过这里面的做法都是nlog(n)的。实际上利用差分数组,这道题目可以有O(n)做法这边简单提一下差分序列,对于一个数组,差分序列的定义是数组中前一个值和后一个值的差值形成的新数组。我们在原数组某个区间加上一个统一的值,正常的做法需要在原数组每个位置去叠加,而体现在差分数组上只需要对区间两端的值进行变化即可,差分数组的prefixsum其实就是原数组。比如原数组为:num=[1,1,1,2,2,3]差分数组为:diff_num=[1,0,0,1,0,

  • 大数据平台的元数据管理

    大数据平台的元数据管理【概念解释】1,大数据平台——是指服务于大数据计算或存储的平台,包括大数据的计算集群(hive、spark、flink、storm等等)和存储集群(如hadoop、hbase等等)。2,大数据平台涉及的元数据——由大数据作业的业务逻辑直接读写处理的业务数据,都不是元数据,除此之外的数据都是元数据。例如数据表的schema信息、任务之间的血缘关系、任务的权限映射关系、数据的业务属性、数据占用的磁…

  • TransactionScope事务处理

    TransactionScope事务处理在我们日常开发的时候,有时候程序需要使用到事务,就比如,我们日常最熟悉的一个流程,那么就是银行的取款,当用户从ATM机器选择取款1000元的时候,恰巧这个时候如果停电,如果没有事务那么将会出现不堪设想的后果,银行都会倒闭。最近在开发一个功能,需要根据单据的信息生成2张单据,要么全部保存,要么都保存失败,做到事务的一致性、原子性,一开始我想到的是SQL和存储过程级别的事务,但是好像按照当前的系统的业务逻辑,这个方法的底层还是拼接SQL语句,后面又想着使用C#的ADO.NET级别的事务,根据数据生成sql,但

  • 自己搭建个人文件服务器_内网设置微信代理

    自己搭建个人文件服务器_内网设置微信代理背景:因为微信公众平台支持的后台服务器只允许为80端口,而本地服务器开发程序与在VPS上部署程序运行,每次无论是使用scp还是ftp进行文件传输无疑是低效的,因此需要一种方法可以方便的在本地服务器调试微信公众平台。有的使用,ngrok,此方法是通过ssh反向代理达到目的。1.在本地服务器通过命令:ssh–fNR8181:localhost:80user@host.com–p22–g达到…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号