#pragma once class CmdGroupWnd; class CmdPaletteSet: public CAdUiPaletteSet { DECLARE_DYNAMIC(CmdPaletteSet); public: CmdPaletteSet(); ~CmdPaletteSet(); bool CreatePaletteSet(LPCTSTR pszTitle); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); DECLARE_MESSAGE_MAP() protected: virtual bool OnClosing(); virtual void GetFloatingMinSize(long *plMinWidth, long *plMinHeight); virtual void SizeChanged(CRect *lpRect, BOOL bFloating, int flags); virtual void GetMinimumSize(CSize &size); virtual void GetMaximumSize(CSize &size); protected: virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz); // 子类化DockBar窗口 BOOL SubclassDockBar(HWND hWnd); // 反子类化DockBar窗口 void UnsubclassDockBar(); // 检测点击到边框的位置 UINT OnTrackHitTest(CPoint pt); // 获取点中边框的位置尺寸 UINT OnGetTrackRect(UINT nDockOrHit, CRect& rc); // 启动拖动操作 void OnStartTracking(UINT nHit); // 拖动更新过程 void OnTrackUpdate(CPoint pt); // 停止拖动操作 void OnStopTracking(); // 拖动更新显示 void OnTrackPaint(); // 拖动状态 BOOL m_bTracking; // 拖动边框位置尺寸 CRect m_rcTracking; private: // 被子类化的DockBar窗口 HWND m_hDockBar; // 子类化DockBar的窗口过程 WNDPROC m_pfnOldProc; // 被子类化DockBar新窗口过程实现 LRESULT OnDockBarProc(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam); // 被子类化DockBar新窗口过程函数 static LRESULT CALLBACK DockBarProc(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam); static CmdPaletteSet* m_pMySelft; }; class CmdPalette : public CAdUiPalette { DECLARE_DYNAMIC(CmdPalette) public: CmdPalette(); ~CmdPalette(); bool CreatePalette(LPCTSTR pszMenuFile,LPCTSTR pszTitle,int nIndex); DECLARE_MESSAGE_MAP() public: virtual void OnSetActive() ; virtual void GetFloatingMinSize (long *pnMinWidth, long *pnMinHeight); void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE); afx_msg void OnDestroy(); afx_msg void OnPaint(); afx_msg BOOL OnMouseWheel(UINT nFlags,short zDelta,CPoint pt); private: std::vector m_grpWndPtrs; };