一
模仿前最重要的一步就是觀察
二
觀察完畢
首先新建一個基於對話框的MFC程序
在QQHideWndDlg
protected
//修正移動時窗口的大小
void FixMoving(UINT fwSideLPRECT pRect);
//從收縮狀態顯示窗口
void DoShow();
//從顯示狀態收縮窗口
void DoHide();
//重載函數只是為了方便調用 實際調用CWnd的SetWindowPos(…)
BOOL SetWindowPos(const CWnd* pWndInsertAfterLPCRECT pCRect UINT nFlags = SWP_SHOWWINDOW);
繼續添加成員變量
private::BOOL m_isSizeChanged;//窗口大小是否改變了
BOOL m_isSetTimer;//是否設置了檢測鼠標的Timer
INTm_oldWndHeight;//舊的窗口寬度INTm_taskBarHeight;//任務欄高度INTm_edgeHeight;//邊緣高度
INTm_edgeWidth;//邊緣寬度
INTm_hideMode;//隱藏模式
BOOL m_hsFinished;//隱藏或顯示過程是否完成
BOOL m_hiding;//該參數只有在!m_hsFinished才有效
//真:正在隱藏假:正在顯示
增加消息響應
WM_ NCHITTEST
WM_MOVING
WM_CREATE
WM_TIMER
然後來到對應的cpp文件
//收縮模式#define HM_NONE//不收縮
#define HM_TOP//向上收縮
#define HM_BOTTOM//向下收縮
#define HM_LEFT//向左收縮
#define HM_RIGHT//向右收縮
#define CM_ELAPSE//檢測鼠標是否離開窗口的時間間隔
#define HS_ELAPSE//伸縮過程每步的時間間隔
#define HS_STEPS//伸縮過程分成多少步完成
#define INTERVAL//觸發粘附時鼠標與屏幕邊界的最小間隔 單位為象素
#define INFALTE//觸發收縮時鼠標與窗口邊界的最小間隔 單位為象素
[
From:http://tw.wingwit.com/Article/program/net/201311/15314.html