// This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #pragma once #include "afxsmartdockingguide.h" #include "afxsmartdockinghighlighterwnd.h" #include <__atlmfc_core.h> #pragma warning(push) #pragma warning(disable : _ATLMFC_DISABLED_WARNINGS) #ifdef _AFX_PACKING #pragma pack(push, _AFX_PACKING) #endif #ifdef _AFX_MINREBUILD #pragma component(minrebuild, off) #endif class CSmartDockingManager : public CObject { public: CSmartDockingManager(); virtual ~CSmartDockingManager(); // create/destroy the manager void Create(CWnd* pwndOwner, CRuntimeClass* prtMarker = NULL, CRuntimeClass* prtCentralGroup = NULL); void Destroy(); // start/stop smart-docking action void Start(CWnd* pDockingWnd); void Stop(); // show/hide smart-docking markers (typically while Ctrl-key is held) void Show(BOOL bShow = TRUE); // get currently highlighted marker number CSmartDockingStandaloneGuide::SDMarkerPlace GetHighlightedGuideNo() const { return m_nHiliteSideNo; } BOOL IsStarted() { return m_bCreated && m_bStarted; } // react to mouse move void OnMouseMove(CPoint point); // react to mainframe's position change void OnPosChange(); // set owner's outer docking rectangle (in screen coords) void SetOuterRect(CRect rcOuter); // move central group to new position // middle marker: nMiddleIsOn == -1 no change, 0 off, 1 on void MoveCentralGroup(CRect rect, int nMiddleIsOn = -1, DWORD dwEnabledAlignment = CBRS_ALIGN_ANY); void ShowCentralGroup(BOOL bShow = TRUE, DWORD dwEnabledAlignment = CBRS_ALIGN_ANY); // marker place void ShowPlaceAt(CRect rect); void HidePlace(); void ShowTabbedPlaceAt(CRect rect, int nTabXOffset, int nTabWidth, int nTabHeight); CWnd* GetOwner() const { return m_pwndOwner; }; void CauseCancelMode(); protected: // state flags BOOL m_bStarted; BOOL m_bCreated; BOOL m_bShown; BOOL m_bCentralGroupShown; CWnd* m_pwndOwner; // mainframe CWnd* m_pDockingWnd; // miniframe being docked DWORD m_dwEnabledAlignment; // enabled alignment of embedded docking bar CRect m_rcOuter; // outer rectangle CSmartDockingHighlighterWnd m_wndPlaceMarker; // place marker CSmartDockingStandaloneGuide* m_arMarkers [9]; CSmartDockingGroupGuidesManager* m_pCentralGroup; CSmartDockingStandaloneGuide::SDMarkerPlace m_nHiliteSideNo; // currently highlighted marker }; #ifdef _AFX_MINREBUILD #pragma component(minrebuild, on) #endif #ifdef _AFX_PACKING #pragma pack(pop) #endif // _ATLMFC_DISABLED_WARNINGS #pragma warning(pop)