我有一个源自CFormView
的子窗口。在OnCreate()
函数的某些条件下,我想关闭此窗口。
我尝试了两个选项:
int CFilterWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
//Trial-1
if (!IsInitialized())
{
DestroyWindow();
return 0;
}
//Trial-2
if (!IsInitialized())
{
return -1;
}
return 0;
}
在这两种情况下,窗口都已关闭,但我的系统返回"Failed to create empty document."
如何避免此消息?
答案 0 :(得分:0)
这是一种完全正常的行为。
文档,框架和视图一次创建。首先创建文档,而不是框架和内部视图。如果其中一个操作失败,则所有其他操作也会回滚并失败。
因此,在MDI OnFileNew的情况下,从您的模板调用OpenDocumentFile。 此函数创建新的CDocument,然后是新的框架窗口。框架窗口创建视图。由于您的代码,这会失败。
您的错误消息来自CMultiDocTemplate :: OpenDocumentFile,因为CreateNewFrame失败。
让MFC创建窗口并在OnInitialUpdate中销毁它的视图。这应该没有这个消息。