明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

創(chuàng)建不在任務(wù)條中顯示窗口按鈕的應(yīng)用

[摘要]現(xiàn)在有很多應(yīng)用程序都使用系統(tǒng)托盤區(qū)來放置圖標(biāo),這時候如果窗口的按鈕再出現(xiàn)在任務(wù)條中就顯得有些多余。創(chuàng)建不在任務(wù)條中顯示窗口按鈕的應(yīng)用時可以使用下面的一些方法:創(chuàng)建對話框應(yīng)用,創(chuàng)建一個POPUP窗口。...
現(xiàn)在有很多應(yīng)用程序都使用系統(tǒng)托盤區(qū)來放置圖標(biāo),這時候如果窗口的按鈕再出現(xiàn)在任務(wù)條中就顯得有些多余。創(chuàng)建不在任務(wù)條中顯示窗口按鈕的應(yīng)用時可以使用下面的一些方法:創(chuàng)建對話框應(yīng)用,創(chuàng)建一個POPUP窗口。但是對于一些已經(jīng)使用文檔/視結(jié)構(gòu)開發(fā)好的程序來說要進(jìn)行修改就比較困難,下面介紹一種簡單的方法可以很方便的實(shí)現(xiàn)這一功能,而且對程序的改動也不大。 這種方法的實(shí)質(zhì)創(chuàng)建一個隱藏的窗口,做為當(dāng)前應(yīng)用中框架窗口的父窗口。你需要對程序進(jìn)行一點(diǎn)改動以適應(yīng)這種需要。


首先:在你的CFrameWnd派生類中定義一個CWnd對象。

class CMainFrame : public CFrameWnd
{
...
protected:
CWnd m_wndParent;
...


然后重載派生類的CMainFrame::PreCreateWindow函數(shù),在函數(shù)中創(chuàng)建隱藏的父窗口。

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CFrameWnd::PreCreateWindow(cs))
return FALSE;

// 創(chuàng)建一個隱藏窗口
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;
}