我有一个MFC应用程序是一个文档/视图/帧实现。一个对话框运行作为按需弹出(从菜单选择)一个无模式对话框。我期待的无模式对话框添加到MDI子视图。基本上,我想要加载从资源文件模板,创建它作为我的新三重奏(文档/视图/帧)的CView的孩子,我增加了模板列出了MDI。

我试过在我的派生类CMyView几件事情:

void CMyView::OnInitialUpdate()
{
  m_ListDialog = new Dialogs::CListDialog( m_config, this );
  m_ListDialog->Create( Dialogs::CListDialog::IDD, this );
  m_ListDialog->ShowWindow( SW_SHOW );
}

我试图调用SetWindowPos,ModifyStyle(WS_CHILD,WS_VISIBLE,DS_CONTROL)。我试着修改资源文件来设置儿童和手动控制。

每次调用创建,该ListDialog的m_hWnd保留为0。这告诉我,它没有得到正确创建。因为m_hWnd是0至SetWindowPos任何呼叫()或的ShowWindow()失败(调试断言失败)。

什么我需要做的就是要构造一个无模式对话框,创建,并出现在我的MDI应用程序中的孩子CMyView?

有帮助吗?

解决方案

我不知道。但是......结果 你有几个可以替代的选择可能取决于适合应用程序如何应该样子。

1 /使用CFormView。 如果您的视图是一家致力于对话,那么你可以得到从MFC类的CFormView的视图。该视图的目的是为了显示一个对话框。

中庸之道使用向导创建一个新的应用程序,我想你应该能够选择的CFormView类作为您的视图类,然后复制生成的文件到您的existaing应用程序。

2 /使用CSplitterWnd。一种观点是一个CFormView和其他您的当前的CView。

3 /使用CDialogBar 如果您认为已经显示的东西,你可以添加对话框,使用类CDialogBar工具栏。

其他提示

这是工作在我的MDI应用程序...

void CGUIView::OnInitialUpdate()
{
    CView::OnInitialUpdate();

    p_Dlg = new CTestDlg;   // a CDialog derived class
    p_Dlg->Create(IDD_DIALOG1,this);
    p_Dlg->ShowWindow(SW_SHOW);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top