好的,我使用這段代碼來隱藏基於對話框的MFC應用程序(VC++)的任務欄圖標。每當我點擊十字或關閉按鈕時,任務欄圖標和對話框就會隱藏起來。但是我不能把這件事做對。每當我點擊標題欄中的關閉按鈕或十字按鈕時,對話框首先閃爍並顯示一種中間對話框,然後隱藏。這非常煩人。經過兩天的徒勞努力,我在這裏發佈我的代碼。所以,大家請幫助我。提前致謝。隱藏MFC對話框
void CMyAppDlg::OnBnClickedCancel()
{
// TODO: Add your control notification handler code here
CWnd* pWnd;
pWnd = AfxGetMainWnd();
RemoveTaskbarIcon(pWnd);
pWnd->ModifyStyle(WS_VISIBLE, 0);
mVisible = FALSE;
}
BOOL CMyAppDlg::RemoveTaskbarIcon(CWnd* pWnd)
{
LPCTSTR pstrOwnerClass = AfxRegisterWndClass(0);
// Create static invisible window
if (!::IsWindow(mWndInvisible.m_hWnd))
{
if (!mWndInvisible.CreateEx(0, pstrOwnerClass, _T(""),
WS_POPUP,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL, 0))
return FALSE;
}
pWnd->SetParent(&mWndInvisible);
return TRUE;
}
下面是對話框的截圖。當我按下關閉或十字按鈕時,首先看起來像this的對話框變成this不到半秒鐘,然後消失(隱藏)。
如果您不想在任務欄中顯示對話框,請更改窗口樣式。不要混淆不可見的父窗口(不可見的窗口的子窗口不可見)。看看WS_EX_TOOLWINDOW。 –
你也不應該直接切換WS_VISIBLE。使用ShowWindow(SW_HIDE)。 –