HideWindow.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. //窗口收缩类型
  3. enum AFX_HIDE_TYPE
  4. {
  5. en_None = 0, //不收缩
  6. en_Top, //向上收缩
  7. en_Bottom, //向下收缩
  8. en_Left, //向左收缩
  9. en_Right //向右收缩
  10. };
  11. //////////////////////////////////////////////////////////////////////////
  12. class CHideWindow
  13. {
  14. protected:
  15. bool m_bSized; //窗口大小是否改变
  16. bool m_bTimed; //是否设置了检测鼠标的Timer
  17. INT m_nWindowHeight; //旧的窗口宽度
  18. INT m_nTaskBarHeight; //任务栏高度
  19. INT m_nEdgeHeight; //边缘高度
  20. INT m_nEdgeWidth; //边缘宽度
  21. AFX_HIDE_TYPE m_enHideType; //隐藏模式
  22. bool m_bFinished; //隐藏或显示过程是否完成
  23. bool m_bHiding; //该参数只有在!m_hsFinished才有效,真:正在隐藏,假:正在显示
  24. HWND m_hOwnHwnd;
  25. public:
  26. CHideWindow(void);
  27. ~CHideWindow(void);
  28. //设置函数
  29. public:
  30. //设置窗口属性
  31. void SetHideWindow(HWND hWnd,int nEdgeHeight=3,int nEdgeWidth=3);
  32. //修正移动时窗口的大小
  33. void FixMoving(UINT fwSide, LPRECT pRect);
  34. //修正改改变窗口大小时窗口的大小
  35. void FixSizing(UINT fwSide, LPRECT pRect);
  36. //从收缩状态显示窗口
  37. void ShowWindow();
  38. //从显示状态收缩窗口
  39. void HideWindow();
  40. //计时器消息
  41. void HideLoop( UINT nIDEvent );
  42. //开始隐藏
  43. void BeginHide(CPoint point);
  44. //重载函数
  45. BOOL SetWindowPos(HWND hWndInsertAfter,LPCRECT pCRect, UINT nFlags = SWP_SHOWWINDOW);
  46. };