例子為非模態對話框,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()時,需要指明對象。否則會導致指向當前對話框。
