1
0

MagneticWnd.h 744 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include <vector>
  3. class CMagneticWnd : public CWnd
  4. {
  5. public:
  6. CMagneticWnd(void);
  7. ~CMagneticWnd(void);
  8. protected:
  9. DECLARE_MESSAGE_MAP()
  10. afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
  11. afx_msg void OnMove(int x, int y);
  12. std::vector<CMagneticWnd*> m_SnapToWnds;
  13. std::vector<CMagneticWnd*> m_AttachedWnd;
  14. bool m_bMovedAttachedWnd;
  15. CRect m_crLastMove;
  16. bool m_bHandleWindowPosChanging;
  17. public:
  18. void AddWindowToSnapTo(CMagneticWnd *pWnd) { m_SnapToWnds.push_back(pWnd); }
  19. void SetWindowAttached(CMagneticWnd *pOther, bool bAttache);
  20. bool IsWindowAttached(CMagneticWnd *pWnd);
  21. void MoveMagneticWWnd(LPCRECT lpRect, BOOL bRepaint = TRUE);
  22. void SetMoveAttachedWnds(bool bMove) { m_bMovedAttachedWnd = bMove; }
  23. };