dockmanager.h

来自「管理项目进度工具的原代码」· C头文件 代码 · 共 74 行

H
74
字号
// DockManager.h: interface for the CDockManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DOCKMANAGER_H__E0312E72_217B_4520_88F2_6708F4148F9D__INCLUDED_)
#define AFX_DOCKMANAGER_H__E0312E72_217B_4520_88F2_6708F4148F9D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Subclass.h"

enum DM_POS
{
	DMP_UNDOCKED = -1,
	DMP_LEFT,
	DMP_RIGHT,
	DMP_BELOW,
};

class CDockManager : public CSubclassWnd, public CSubclasser  
{
public:
	CDockManager();
	virtual ~CDockManager();

	BOOL Initialize(CWnd* pMainWnd, CWnd* pDockWnd, 
					DM_POS nPos = DMP_UNDOCKED,	DM_POS nLastPos = DMP_RIGHT,
					int nWidthDocked = -1, int nWidthDockedMax = -1, 
					int nHeightDocked = -1, int nHeightDockedMax = -1);
	BOOL Initialized() { return IsHooked(); }
	BOOL Dock(DM_POS nPos);
	BOOL UnDock();

	inline DM_POS GetDockPos() { return m_nDockPos; }
	inline DM_POS GetLastDockPos() { return IsDocked() ? m_nDockPos : m_nLastDockPos; }
	inline BOOL IsDocked() { return m_nDockPos != DMP_UNDOCKED; }
	CRect GetUnDockedRect();
	int GetDockedWidth(BOOL bMaximized) { return bMaximized ? m_nWidthDockedMax : m_nWidthDocked; }
	int GetDockedHeight(BOOL bMaximized) { return bMaximized ? m_nHeightDockedMax : m_nHeightDocked; }

   inline BOOL Maximized() { return ::IsZoomed(GetHwnd()); }

protected:
	DM_POS m_nDockPos, m_nLastDockPos;
	CRect m_rUndocked;
	int m_nWidthDocked, m_nWidthDockedMax;
	int m_nHeightDocked, m_nHeightDockedMax;
	CSize m_sizeMainMin, m_sizeDockMin;
	BOOL m_bResizeUpdate;
	BOOL m_bSizeUpdate;

protected:
	virtual LRESULT WindowProc(HWND hRealWnd, UINT msg, WPARAM wp, LPARAM lp); // main wnd
	virtual LRESULT ScWindowProc(HWND hRealWnd, UINT msg, WPARAM wp, LPARAM lp); // dock wnd
	virtual CSubclasser* GetTopSubclasser() { return this; }

	void UpdateDockWindowPos(BOOL bJustRestored = FALSE);
	void UpdateMainWindowPos();

	CRect GetWorkArea(BOOL bMaximized = TRUE);
   void MoveWindow(CWnd* pWnd, CRect rect);
   CSize GetMinMaximizedSize();

	// pseudo message handlers
	void OnMaximize();
	void OnRestore();
	void OnMinMaxInfo(LPMINMAXINFO pMMI, BOOL bMain);

};

#endif // !defined(AFX_DOCKMANAGER_H__E0312E72_217B_4520_88F2_6708F4148F9D__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?