MFC 關閉所有彈出模態對話框,並創建新的對話框(切換/跳轉窗口)

   CWnd* pOldWnd = CWnd::FromHandle(GetActiveWindow ());//獲得當前活動窗口,如果爲主窗口,跳過!
  if (this->m_pMainWnd!= pOldWnd)//非主窗口
  {
   CDialog* pOldDlg = (CDialog*)CWnd::FromHandle (GetActiveWindow ());
   HWND hwnd = GetActiveWindow();
   while (pOldDlg!=NULL && (pOldDlg != ((CDialog*)theApp.m_pMainWnd) /*(hwnd != NULL) && (hwnd != this->m_pMainWnd->m_hWnd)*/))
   {
    //pOldDlg->OnClose ();
   // ::SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);
   
    //pOldDlg->OnCancel ();
             //hwnd = GetActiveWindow ();
    //pOldDlg->CloseWindow ();
   // pOldDlg->DestroyWindow ();
    pOldDlg->EndDialog (0);
   pOldDlg = (CDialog*)CWnd::FromHandle (GetActiveWindow ());//獲得當前窗口,並關閉
    //pOldDlg = (CDialog*)this->m_pActiveWnd;
   }
  }

 

/*
     this->m_pMainWnd->ShowWindow (SW_HIDE);
  CWnd* pOldWnd = CWnd::FromHandle(GetActiveWindow ());
  while(pOldWnd != NULL)
  {
   pOldWnd->DestroyWindow ();
   pOldWnd = CWnd::FromHandle(GetActiveWindow ());
  }
  this->m_pMainWnd->ShowWindow (SW_SHOW);*/

/*
 int iParam(0);
 EnumChildWindows (this->m_pMainWnd->m_hWnd,EnumChildProc,iParam);*/


  switch(eto)
  {
  case iddlg:
   {
            CDialog* pNewDlg = (CDialog*)CWnd::FromHandle(GetDlgItem(NULL,IDD_DIALOG));
   if (pNewDlg == NULL)
   {
    pNewDlg = (CDialog*) new CDialog1;
    pNewDlg->Create (IDD_DIALOG,NULL);
   }
   pNewDlg->CenterWindow ();
   //pNewDlg->OnBnClickedBctuihuan ();
   pNewDlg->ShowWindow (SW_SHOW);
   pNewDlg->SetDlgCtrlID (IDD_DIALOG);
   break;
   }

}

 

寫在APP文件中,即可截獲全局消息,來實現切換窗口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章