現在有很多應用程序都使用系統托盤區來放置圖標,這時候如果窗口的按鈕再出現在任務條中就顯得有些多余。創建不在任務條中顯示窗口按鈕的應用時可以使用下面的一些方法:創建對話框應用,創建一個POPUP窗口。但是對於一些已經使用文檔/視結構開發好的程序來說要進行修改就比較困難,下面介紹一種簡單的方法可以很方便的實現這一功能,而且對程序的改動也不大。 這種方法的實質創建一個隱藏的窗口,做為當前應用中框架窗口的父窗口。你需要對程序進行一點改動以適應這種需要。
首先:在你的CFrameWnd派生類中定義一個CWnd對象。
class CMainFrame : public CFrameWnd
{
...
protected:
CWnd m_wndParent;
...
然後重載派生類的CMainFrame::PreCreateWindow函數,在函數中創建隱藏的父窗口。
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CFrameWnd::PreCreateWindow(cs))
return FALSE;
// 創建一個隱藏窗口
if (!::IsWindow(m_wndParent.m_hWnd))
{
LPCTSTR pstrOwnerClass = AfxRegisterWndClass(0);
if (!m_wndParent.CreateEx(0, pstrOwnerClass, "", WS_POPUP,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, 0))
return FALSE;
}
cs.hwndParent = m_wndParent.m_hWnd;
return TRUE;
}