CFormView(MFC)中的父窗口为NULL

时间:2013-08-07 19:03:43

标签: c++ visual-c++ mfc

我有一个CFormView派生类,它有一个我试图调用ShowWindow的按钮。但是,此调用失败,因为m_hWnd变量为null。为什么m_hWnd为null?该对话框在属性窗口中设置了child样式,并且我将父CFrameWnd与表单视图相关联。这种观点是无模式的。

创建视图的代码:

void CMainFrame::SwitchEditView(CRuntimeClass * pViewClass)
{
    context.m_pNewViewClass=pViewClass;
    context.m_pCurrentDoc=pDoc;
    context.m_pNewDocTemplate=NULL;
    context.m_pLastView=NULL;
    context.m_pCurrentFrame=this;

    m_subSplitter.CreateView(0,1,pViewClass,CSize(0,0), &context); // create new view and add it to the splitter window
}

我的CFormView派生类的构造函数:

CDFAManEditViewProject::CDFAManEditViewProject()
: CFormView(CDFAManEditViewProject::IDD)
{
    // c_btnEdit is a CButton MFC control
    c_btnEdit.ShowWindow(SW_SHOW); // this call fails on ASSERT(::IsWindow(m_hWnd) )
}

1 个答案:

答案 0 :(得分:0)

您正尝试从视图构造函数访问编辑控件。但是构造函数运行时尚未创建视图窗口。这就是为什么你没有m_hWnd并且还没有编辑控件。

将控件的初始化移动到视图的OnInitialUpdate中。