如何建立非模态对话框

如何建立非模态对话框

1、重写对话框的构造函数,使对话框跟某个视图相关联。如:CXXDlg(CView *pView);

2、在对话框类中增加Create()函数用于创建对话框,作用相当于模态对话框的DoModal();

BOOL CXXDlg::Create()

{

          returnCDialog::Create(CXXDlg::IDD);

}

3、在视图类的头文件中加入对话框类 class CXXDlg;,并定义该对话框类的指针CXXDlg *m_pXXDlg;

4、在视图类的构造函数中初始化对话框类的指针m_pXXDlg = new CXXDlg(this);

5、在需要弹出该非模态对话框的地方,先取视图类指针pView,然后用

if (!m_XXDlg->GetSafeHwnd()) //如果对话框不存在

{

pView->m_pXXDlg->Create();

pView-> m_pXXDlg ->ShowWindow(SW_SHOW);

}

6、此时已经能够弹出非模态对话框了,但是该对话框的位置需要进行调整,把它放到客户区得中间。

          CRectRectDlg,RectClient;

              m_XXDlg->GetWindowRect(&RectDlg);

              GetClientRect(&RectClient);

             

              intx=RectClient.left+(RectClient.Width()-RectDlg.Width())/2;

              inty=RectDlg.top+(RectClient.Height()-RectDlg.Height())/2;

              m_pXXDlg->MoveWindow(x,y,RectDlg.Width(),RectDlg.Height());

7、在对话框关闭的时候需要调用DestroyWindow();

你可能感兴趣的:(Class)