| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #pragma once
- //窗口收缩类型
- enum AFX_HIDE_TYPE
- {
- en_None = 0, //不收缩
- en_Top, //向上收缩
- en_Bottom, //向下收缩
- en_Left, //向左收缩
- en_Right //向右收缩
- };
- //////////////////////////////////////////////////////////////////////////
- class CHideWindow
- {
- protected:
- bool m_bSized; //窗口大小是否改变
- bool m_bTimed; //是否设置了检测鼠标的Timer
- INT m_nWindowHeight; //旧的窗口宽度
- INT m_nTaskBarHeight; //任务栏高度
- INT m_nEdgeHeight; //边缘高度
- INT m_nEdgeWidth; //边缘宽度
- AFX_HIDE_TYPE m_enHideType; //隐藏模式
- bool m_bFinished; //隐藏或显示过程是否完成
- bool m_bHiding; //该参数只有在!m_hsFinished才有效,真:正在隐藏,假:正在显示
- HWND m_hOwnHwnd;
- public:
- CHideWindow(void);
- ~CHideWindow(void);
- //设置函数
- public:
- //设置窗口属性
- void SetHideWindow(HWND hWnd,int nEdgeHeight=3,int nEdgeWidth=3);
- //修正移动时窗口的大小
- void FixMoving(UINT fwSide, LPRECT pRect);
- //修正改改变窗口大小时窗口的大小
- void FixSizing(UINT fwSide, LPRECT pRect);
- //从收缩状态显示窗口
- void ShowWindow();
- //从显示状态收缩窗口
- void HideWindow();
- //计时器消息
- void HideLoop( UINT nIDEvent );
- //开始隐藏
- void BeginHide(CPoint point);
- //重载函数
- BOOL SetWindowPos(HWND hWndInsertAfter,LPCRECT pCRect, UINT nFlags = SWP_SHOWWINDOW);
- };
|