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文件中,即可截獲全局消息,來實現切換窗口