我有一个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) )
}
答案 0 :(得分:0)
您正尝试从视图构造函数访问编辑控件。但是构造函数运行时尚未创建视图窗口。这就是为什么你没有m_hWnd并且还没有编辑控件。
将控件的初始化移动到视图的OnInitialUpdate中。