161 lines
5.5 KiB
C++
161 lines
5.5 KiB
C++
// ===================================================================================
|
|
// Class Specification : COXSizableMiniDockFrameWnd
|
|
// ===================================================================================
|
|
|
|
// Header file : OXSzMiniDockFrmWnd.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 CMiniDockFrameWnd
|
|
|
|
// YES Is a Cwnd.
|
|
// YES Two stage creation (constructor & Create())
|
|
// YES Has a message map
|
|
// NO Needs a resource (template)
|
|
|
|
// NO Persistent objects (saveable on disk)
|
|
// NO Uses exceptions
|
|
|
|
// //////////////////////////////////////////////////////////////////////////
|
|
|
|
// Desciption :
|
|
//
|
|
// This class implements all the sizeable functionality a mini frame window needs.
|
|
// Normally a CMiniDockFrameWindow is not resizeable.
|
|
|
|
// Remark:
|
|
//
|
|
|
|
// Prerequisites (necessary conditions):
|
|
// ***
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __SIZEMINIDOCKFRM_H__
|
|
#define __SIZEMINIDOCKFRM_H__
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
#include "OXDllExt.h"
|
|
|
|
#include <afxpriv.h>
|
|
#include "OXDragDockContext.h"
|
|
#include "OXCoolToolBar.h"
|
|
#include "OXSizeDockBar.h" // Added by ClassView
|
|
|
|
// Define the WM_QUERYSNAPPING user message used to query a frame window whether or not
|
|
// the snaping and tear-off behavior is enabled
|
|
#ifndef WM_QUERYSNAPPING
|
|
#define WM_QUERYSNAPPING (WM_USER + 92)
|
|
#endif
|
|
|
|
class COXMiniFrameSkin;
|
|
|
|
class OX_CLASS_DECL COXSizableMiniDockFrameWnd : public CMiniDockFrameWnd
|
|
{
|
|
friend COXDragDockContext; // access to IgnoreSysMove flag
|
|
friend class COXMiniFrameSkinClassic;
|
|
friend class COXMiniFrameSkinXP;
|
|
|
|
// Data members -------------------------------------------------------------
|
|
public:
|
|
|
|
enum ContainedBarType { Unknown, MFCBase, MRCSizeBar } ;
|
|
|
|
BOOL m_bBeingDestroyed;
|
|
|
|
protected:
|
|
// Deternines if the mini frame is currently being dragger
|
|
enum ContainedBarType m_nContainedBarType;
|
|
COXMiniFrameSkin* GetMiniFrameSkin();
|
|
COXSizableMiniDockFrameWnd();
|
|
~COXSizableMiniDockFrameWnd();
|
|
|
|
private :
|
|
COXMiniFrameSkin* m_pMiniFrameSkin;
|
|
static LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam);
|
|
static HHOOK m_hMouseHook;
|
|
static HWND m_hwndPrevMouseMoveWnd;
|
|
|
|
// Member functions ---------------------------------------------------------
|
|
public:
|
|
|
|
enum ContainedBarType GetContainedBarType();
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : the type of the contained bar
|
|
// --- Effect : Floating frames are created from CFrameWnd::CreateFloatingFrame(), and at
|
|
// this point, we don't know what type of control bar will eventually be in
|
|
// this frame. This routine determines the type of control bar, and sets the
|
|
// neccessary styles. Generally this routine gets called as soon as we do a
|
|
// WM_NCHITTEST on the window - ie before the user can get a chance to
|
|
// manipulate it with the mouse
|
|
//
|
|
// COXSizeControlBar - default style of WS_THICKFRAME is ok (we've overridden
|
|
// the create too) but we need to ensure "SC_SIZE" is on
|
|
// the menu, otherwise we can't the default WM_NCLBUTTONDOWN
|
|
// won't generate an SC_SIZE.
|
|
//
|
|
// CControlBar, CBRS_SIZE_DYNAMIC
|
|
// - set MFS_4THICKFRAME (disallow diagonal sizing)
|
|
//
|
|
// CControlBar, not CBRS_SIZE_DYNAMIC
|
|
// - remove WS_THICKFRAME & add MFS_MOVEFRAME (we don't want
|
|
// sizing hit test values)
|
|
|
|
inline BOOL IsBeingDestroyed() { return m_bBeingDestroyed; }
|
|
BOOL IsDockingViewBar();
|
|
|
|
protected:
|
|
//{{AFX_MSG(COXSizableMiniDockFrameWnd)
|
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
|
afx_msg void OnSize(UINT nType, int cx, int cy);
|
|
afx_msg void OnClose();
|
|
afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint pt);
|
|
#if _MSC_VER >= 1400
|
|
afx_msg LRESULT OnNcHitTest(CPoint point);
|
|
#else
|
|
afx_msg UINT OnNcHitTest(CPoint point);
|
|
#endif
|
|
afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
|
|
afx_msg BOOL OnNcActivate(BOOL bActive);
|
|
afx_msg void OnParentNotify(UINT message, LPARAM lParam);
|
|
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
|
|
afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
|
|
afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
|
|
afx_msg void OnNcPaint();
|
|
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
|
afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
|
|
afx_msg void OnDestroy();
|
|
afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
|
|
afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
private:
|
|
DECLARE_DYNCREATE(COXSizableMiniDockFrameWnd)
|
|
|
|
//{{AFX_VIRTUAL(COXSizableMiniDockFrameWnd)
|
|
protected:
|
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
|
//}}AFX_VIRTUAL
|
|
|
|
};
|
|
|
|
#endif // __SIZEMINIDOCKFRM_H__
|
|
|