例子为非模态对话框,ID为ID_MODELESS,为其创建一个类:CModelessDlg

在父对话框(ID_FIRSTUI)的相应按钮写上事件(以IDCANCEL为例):

void CFirstUIDlg::OnBnClickedCancel()
{    
    if (pDlg == NULL)
    {
        // 指针为空则创建非模态对话框并显示
        pDlg = new CModelessDlg;
        pDlg->Create(IDD_MODELESS, this);
        pDlg->ShowWindow(SW_SHOW);
    }
    else
    {
        // 判断对话框可见状态,可见点击后隐藏,隐藏则点击可见
        BOOL bVisible = pDlg->IsWindowVisible();
        int nCmdShow = bVisible ? SW_HIDE : SW_SHOW;
        pDlg->ShowWindow(nCmdShow);
    }
}

注:

  1、pDLG在父对话框的头文件中定义CModeless *pDlg;
  2、使用IsWindowVisible()时,需要指明对象。否则会导致指向当前对话框。

 

posted on 2012-08-09 11:27  fengluo  阅读(8342)  评论(0编辑  收藏  举报