关于网友提出的“ CMainFrame中调用GetDlgItem为什么会返回NULL?”问题疑问,本网通过在网上对“ CMainFrame中调用GetDlgItem为什么会返回NULL?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: CMainFrame中调用GetDlgItem为什么会返回NULL?
描述: SDI程序,打算进行多视图切换(该目标已经实现),但是对有个地方不解,请大家帮忙看看,不甚感激;
void CMainFrame::SwitchToForm(int nForm)
{
......
CView *pNewActiveView=(CView*)GetDlgItem(nForm); //就是该句
......
}
不管给nForm传入的值是CFormView类ID、CDialog类ID、Menu类ID等,GetDlgItem(nForm)返回的都是NULL;
后来把该句换成:
HWND hWnd = ::GetDlgItem(m_hWnd,nForm);
DWORD x = GetLastError();
CView *pNewActiveView = (CView*)CWnd::FromHandle(hWnd);
发现x的值始终都是1421(Control ID not found,控件ID未找到),但是传入的nFrom明明在resource.h中存在的,本人认为出现1421这个错误应该是因为nForm这个ID不是CMainFrame的Item。
小弟想问的就是:什么情况下某ID才是某CWnd的Item?
不甚感激。
以上介绍了“ CMainFrame中调用GetDlgItem为什么会返回NULL?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2450865.html