好的,我使用这段代码来隐藏基于对话框的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)。 –