cwnd : getdlgitem cwnd * getdlgitem (int NID ) const; void cwnd :3360 getdlgitem (int NID,HWND* phWnd ) const; 返回值:
指向指定控件或子窗口的指针。 如果没有具有由nID指定的整数ID的控件,则返回NULL。
返回的指针是临时的,可能无法保存以供将来使用。
参数:
nID指定要检索的控件或子窗口的标识符。 指向phWnd子窗口的指针。 GetDlgItem :根据对话窗口或控件的ID,返回指向该对话窗口或控件的对象的指针
voidcgetradiodlg :3360 on buttonok ((/todo : addyourcontrolnotificationhandlercodeherecstringstr; cbutton*radiobutton=(cbutton* ) getdlgitem(IDC_radio1m_radio-1 ); radiobutton-getwindowtext(str; 消息盒(str; }扩展: MFC项目的Resource.h文件定义了各种资源ID,如下图中单选按钮的定义所示
疑问:
宏定义: IDC_RADIO1对应于1000cwnd*getdlgitem(intnid ) const; gtdlgitem(IDC_RADIO1 m_Radio - 1 ) IDC_RADIO1m_radio-1是int类型的数字,在函数调用时将IDC_radio1转换为1000
但是,在MFC中,如果通过拖动添加按钮,则会出现宏定义不连续的现象。 也就是说,情况如下。
在IDC_RADIO 1000IDC_RADIO1 1002中,使用以下方法搜索按钮是否会出现问题
voidcgetradiodlg :3360 on radio1((/todo : addyourcontrolnotificationhandlercodeherem _ radio=1; } voidcgetradiodlg :3360 on radio2((/todo : addyourcontrolnotificationhandlercodeherem _ radio=2; } voidcgetradiodlg :3360 on radio3((/todo : addyourcontrolnotificationhandlercodeherem _ radio=3; } voidcgetradiodlg :3360 on radio4((/todo : addyourcontrolnotificationhandlercodeherem _ radio=4; }重新启动}GetDlgItem(IDC_radio1m_radio-1 )或程序将被重新修复。 为了进行验证,如果想要访问控件特定的功能,请尝试将getdlgitem返回值强制转换为与控件对应的类型
cbutton*radiobutton=(cbutton* ) getdlgitem(IDC_radio1m_radio-1 ); radiobutton-getwindowtext(str; 不建议通过这种方式访问控件特定的功能。 这是因为MFC不太支持这种用法,在某些情况下会发生严重错误,在某些情况下没有任何效果