在基本单文档mfc程序中,我想让一个非模式对话框刚好覆盖整个view的client区域,在CMainFrame的create函数写到:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
         ...... CRect rect;
  CView* pview = this->GetActiveView();
if (pview != NULL)
{
pview->GetClientRect(&rect);
}
else
{
AfxMessageBox("error");
}
    dlg.Create(IDD_DIALOG1,this);
dlg.SetWindowText("dlg");
dlg.ShowWindow(SW_SHOWMAXIMIZED);
dlg.SetWindowPos(NULL,0,0,rect.Width(),rect.Height (),SWP_NOMOVE|SWP_NOZORDER);
dlg.UpdateWindow(); return 0;
}其中dlg为非模式对话框对象。
结果pview为NULL;请问要实现我的功能该怎么办呢?

解决方案 »

  1.   

    把对话框改造成CFormView派生类
      

  2.   

    MainFrame在创建时View还没有创建出来吧?
    在View的InitalUpdate函数里面添加那些代码试一下
      

  3.   

    把对话框改造成CFormView派生类
      

  4.   

    把对话框改造成CFormView派生类后在CMainFrame里声明其对象dlg后编译出现
    cannot access protected member declared in class 'MyDlg'
      

  5.   

    应该是:
    MyDlg::~MyDlg' : cannot access protected member declared in class 'MyDlg'
      

  6.   

    在View的InitalUpdate函数里面添加那些代码试一下
      

  7.   

    用向导生成一个CFormView派生类,然后把你MyDlg里的东西拷贝过去
      

  8.   

    需要加入相应的文档(CXXXDOC.H)和(CXXXVIEW.H)的支持。