// =================================================================================== // Class Specification : COXDragDockContext // =================================================================================== // Header file : OXDragDockContext.h // Version: 9.3 // This software along with its related components, documentation and files ("The Libraries") // is © 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is // governed by a software license agreement ("Agreement"). Copies of the Agreement are // available at The Code Project (www.codeproject.com), as part of the package you downloaded // to obtain this file, or directly from our office. For a copy of the license governing // this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900. // Some portions Copyright (C)1994-5 Micro Focus Inc, 2465 East Bayshore Rd, Palo Alto, CA 94303. // ////////////////////////////////////////////////////////////////////////// // Properties: // NO Abstract class (does not have any objects) // YES Derived from CDockContext // NO Is a Cwnd. // NO Two stage creation (constructor & Create()) // NO Has a message map // NO Needs a resource (template) // NO Persistent objects (saveable on disk) // NO Uses exceptions // ////////////////////////////////////////////////////////////////////////// // Desciption : // // This replaces the MFC CDockContext class. It provides the "dragging" user interface, // and includes some extra features that try to indicate exactly where a bar will // dock. // // The gateway MFC gives us to work with is: // 1) CControlBar::EnableDocking() creates the dock context for the control bar - so it's // important to use the COX...Frame.. implementation of EnableDocking(). // // 2) Other than the constructor/destructor, the only function access outside this class // is to StartDrag(CPoint pt), called when we want to start dragging the control bar. // // The other important tie-ins are the call to Dock/Float control bar which we need to handle // with the same interpretation of parameters as the existing MFC implementation. // Remark: // // Prerequisites (necessary conditions): // *** ///////////////////////////////////////////////////////////////////////////// #ifndef __DRAGDOCKCTXT_H__ #define __DRAGDOCKCTXT_H__ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include "OXDllExt.h" #include class COXSizeDockBar; class OX_CLASS_DECL COXDragDockContext : public CDockContext { // Data members ------------------------------------------------------------- public: CRect m_rectDragDock; // rectangle indicating where we'll dock protected: CRect m_rectDragHorzAlone; CRect m_rectDragVertAlone; COXSizeDockBar* m_pTargetDockBar; CPoint m_ptStart; private : // Member functions --------------------------------------------------------- public: COXDragDockContext(CControlBar* pBar); // --- In : // --- Out : // --- Returns : // --- Effect : Constructor of object // It will initialize the internal state virtual void StartDrag(CPoint pt); // --- In : pt : point where dragging starts // --- Out : // --- Returns : // --- Effect : only thing called externally virtual void ToggleDocking(); // --- In : // --- Out : // --- Returns : // --- Effect : called to toggle docking void Move(CPoint pt); // --- In : pt : point to where window has moved // --- Out : // --- Returns : // --- Effect : called when mouse has moved void EndDrag(); // --- In : // --- Out : // --- Returns : // --- Effect : drop window void CancelDrag(); // --- In : // --- Out : // --- Returns : // --- Effect : drag cancelled void OnKey(int nChar, BOOL bDown); // --- In : // --- Out : // --- Returns : // --- Effect : keyboardhit BOOL Track(); // --- In : // --- Out : // --- Returns : // --- Effect : called when window is dragged void DrawFocusRect(BOOL bRemoveRect = FALSE); // --- In : bRemoveRect : whether or not to erase the previous focus rect // --- Out : // --- Returns : // --- Effect : draws a rectangle to indicate focus void UpdateState(BOOL* pFlag, BOOL bNewValue); // --- In : // --- Out : // --- Returns : // --- Effect : Update the focus state of the dragged window DWORD CanDock(); // --- In : // --- Out : // --- Returns :whether or not the window can be docked // --- Effect : CDockBar* GetDockBar(); // --- In : // --- Out : // --- Returns : the dockbar where docking will take place // --- Effect : virtual ~COXDragDockContext(); // --- In : // --- Out : // --- Returns : // --- Effect : Destructor of object protected: private: }; #endif // __DRAGDOCKCTXT_H__