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对这样的用法不太支持,有些情况下会产生严重错误,而有些情况下则不起任何作用

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10关闭445端口方法_服务器关闭445端口

    win10关闭445端口方法_服务器关闭445端口445端口是一种TCP端口,有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化掉。今天小编将为大家分享Win11关闭445端口的方法,一起来看看吧!更多重装系统教程尽在小白系统重装官网  1、首先,按Win+S组合键,或点击底部任务栏上的搜索图标,打开的Windows搜索窗口,顶部输入Windows防火墙,然后点击系统给出的最佳匹配WindowsDefender防

    2022年10月7日
    2
  • Oracle函数写法和举例[通俗易懂]

    Oracle函数写法和举例[通俗易懂]1、declare声明变量后的每个变量都要加分号;2、所有的语句结束和sql语句结尾,都要加分号;3、变量赋值variable:=’1234’如:recordId:=’1234′;4、插入列数据获取:new.colname如:new.exec_record_id5、sql查询写入变量selectcolnameintovariable如:selectverify_dateintoexecDatefromorders_executed_rec…

    2022年7月17日
    19
  • SourceInsight3注册码[通俗易懂]

    SourceInsight3注册码[通俗易懂]SI3US-241109-94280

    2022年10月3日
    5
  • idea配置Tomcat时没有Artifacts选项

    idea配置Tomcat时没有Artifacts选项首先解释一下IDEA中的Artifact是什么?Artifacts是maven中的一个概念,表示某个module要如何打包,例如warexploded、war、jar、ear等等这种打包形式;好奇这个带不带exploded的有什么差别不?exploded在这里你可以理解为展开,不压缩的意思。也就是war、jar等产出物没压缩前的目录结构。这个是不带exploded的。和下图的框框对比下,就可以看到差别啦这两张图,意在说明,带exploded和不带的差别,一个是打包压缩,另.

    2022年10月18日
    3
  • “UEFI虚拟机”以及“EFI SHELL”介绍「建议收藏」

    “UEFI虚拟机”以及“EFI SHELL”介绍「建议收藏」含UEFIBIOS的电脑并不是所有网友都有,为了让大家都能体验“UEFI”,现在将VMware(8.0以上的版本)打造成“UEFI虚拟机”,具体方法去年提供过,现在为了本系列教程的完整性,重新提供:新建虚拟机后,在虚拟机目录下找到后缀为vmx的文件,使用记事本打开后,添加一行文字(红色):—————–firmware=”efi”———-…

    2022年7月19日
    20
  • java resourcebundle_Java – Properties和ResourceBundle类学习「建议收藏」

    java resourcebundle_Java – Properties和ResourceBundle类学习「建议收藏」一、前言在项目的开发过程中,为了统一配置的管理,我们经常需要将一些配置信息根据环境的不同,配置在不同的properties中,然后从里面进行读取。而Properties类作为最基础也是最经常使用的类,通过本文我们来学习一下它的使用,然后再顺便学习下其他几种读取properties文件的方式。二、Properties和ResourceBundle类Properties表示一个持久的属性集,属性列表通…

    2022年7月12日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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