大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
CWnd::GetDlgItem
CWnd* 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 here
CString 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 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账号...