然后在構(gòu)造函數(shù)初始化成員變量:
m_isSizeChanged = FALSE;m_isSetTimer = FALSE;m_hsFinished = TRUE;m_hiding = FALSE;m_oldWndHeight = MINCY;m_taskBarHeight = 30;m_edgeHeight = 0;m_edgeWidth=0;m_hideMode = HM_NONE;
完成了一些初始的工作,那么就開始進(jìn)入關(guān)鍵的函數(shù)實(shí)現(xiàn)了。首先是在OnCreate做些窗口的初始化和獲得一些系統(tǒng)信息。
代碼一
int CQQHideWndDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CDialog::OnCreate(lpCreateStruct) == -1)return -1; // TODO: Add your specialized creation code here//獲得任務(wù)欄高度CWnd* p;p = this->FindWindow("Shell_TrayWnd",NULL);if(p != NULL){CRect tRect;p->GetWindowRect(tRect);m_taskBarHeight = tRect.Height();}//修改風(fēng)格使得他不在任務(wù)欄顯示ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);//去掉關(guān)閉按鍵(如果想畫3個按鍵的話)//ModifyStyle(WS_SYSMENU,NULL);//獲得邊緣高度和寬度m_edgeHeight = GetSystemMetrics(SM_CYEDGE);m_edgeWidth = GetSystemMetrics(SM_CXFRAME);return 0;}
接著如何知道鼠標(biāo)進(jìn)入或移出窗口呢?在前面我已經(jīng)證明了WM_MOUSEMOVE和WM_MOUSELEAVE不符合我們的要求,于是我用了WM_ NCHITTEST這個消息,你可以看到我在這個消息響應(yīng)函數(shù)中用了兩個SetTimer,一個用于檢測鼠標(biāo)是否離開,一個用于伸縮過程,不管你喜歡不喜歡,要達(dá)到第7點(diǎn)和第11點(diǎn),這個是必須的,考慮的效率問題,在不需要的時候關(guān)閉這些Timer就好了。
m_isSizeChanged = FALSE;m_isSetTimer = FALSE;m_hsFinished = TRUE;m_hiding = FALSE;m_oldWndHeight = MINCY;m_taskBarHeight = 30;m_edgeHeight = 0;m_edgeWidth=0;m_hideMode = HM_NONE;
完成了一些初始的工作,那么就開始進(jìn)入關(guān)鍵的函數(shù)實(shí)現(xiàn)了。首先是在OnCreate做些窗口的初始化和獲得一些系統(tǒng)信息。
代碼一
int CQQHideWndDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CDialog::OnCreate(lpCreateStruct) == -1)return -1; // TODO: Add your specialized creation code here//獲得任務(wù)欄高度CWnd* p;p = this->FindWindow("Shell_TrayWnd",NULL);if(p != NULL){CRect tRect;p->GetWindowRect(tRect);m_taskBarHeight = tRect.Height();}//修改風(fēng)格使得他不在任務(wù)欄顯示ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);//去掉關(guān)閉按鍵(如果想畫3個按鍵的話)//ModifyStyle(WS_SYSMENU,NULL);//獲得邊緣高度和寬度m_edgeHeight = GetSystemMetrics(SM_CYEDGE);m_edgeWidth = GetSystemMetrics(SM_CXFRAME);return 0;}
接著如何知道鼠標(biāo)進(jìn)入或移出窗口呢?在前面我已經(jīng)證明了WM_MOUSEMOVE和WM_MOUSELEAVE不符合我們的要求,于是我用了WM_ NCHITTEST這個消息,你可以看到我在這個消息響應(yīng)函數(shù)中用了兩個SetTimer,一個用于檢測鼠標(biāo)是否離開,一個用于伸縮過程,不管你喜歡不喜歡,要達(dá)到第7點(diǎn)和第11點(diǎn),這個是必須的,考慮的效率問題,在不需要的時候關(guān)閉這些Timer就好了。