127 lines
2.9 KiB
C++
127 lines
2.9 KiB
C++
#pragma once
|
|
#include "singleton.h"
|
|
#include <set>
|
|
|
|
|
|
class CBimPalette : public CAdUiPalette
|
|
{
|
|
DECLARE_DYNAMIC(CBimPalette)
|
|
|
|
public:
|
|
typedef std::map<CString, AcDbObjectIdArray> IDMap;
|
|
|
|
public:
|
|
CBimPalette();
|
|
~CBimPalette();
|
|
void SetObjectIds(const AcDbObjectIdArray &ids);
|
|
|
|
private:
|
|
virtual void GetFloatingMinSize(long *pnMinWidth, long *pnMinHeight);
|
|
DECLARE_MESSAGE_MAP()
|
|
afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
|
|
afx_msg void OnPaint();
|
|
afx_msg void OnBtnClickAdd();
|
|
afx_msg void OnBtnClickMod();
|
|
afx_msg void OnBtnClickDel();
|
|
afx_msg void OnBtnClickImp();
|
|
afx_msg void OnBtnClickExp();
|
|
afx_msg void OnComboBoxSelChange();
|
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
|
|
|
void CalcCtrlPosition(CRect &rc);
|
|
|
|
void RefreshList();
|
|
|
|
void GetSelIDs(AcDbObjectIdArray &ids);
|
|
|
|
bool GetSelBimData(CString &name, CString &value);
|
|
|
|
private:
|
|
CAcUiComboBox *m_pComboBox;
|
|
CAcUiBitmapButton *m_pBtnAdd;
|
|
CAcUiBitmapButton *m_pBtnMod;
|
|
CAcUiBitmapButton *m_pBtnDel;
|
|
CAcUiBitmapButton *m_pBtnImp;
|
|
CAcUiBitmapButton *m_pBtnExp;
|
|
CAcUiListCtrl *m_pListCtrl;
|
|
CFont m_font;
|
|
CFont m_fontCombo;
|
|
|
|
AcDbObjectIdArray m_ids;
|
|
IDMap m_mapIDs;
|
|
};
|
|
|
|
class CBimPaletteSet: public CAdUiPaletteSet
|
|
{
|
|
DECLARE_DYNAMIC(CBimPaletteSet);
|
|
public:
|
|
CBimPaletteSet();
|
|
~CBimPaletteSet();
|
|
bool CreatePaletteSet(LPCTSTR pszTitle);
|
|
void SetObjectIds(const AcDbObjectIdArray &ids);
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
|
afx_msg void OnDestroy();
|
|
|
|
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;
|
|
|
|
// palette
|
|
CBimPalette *m_pBimPalette;
|
|
|
|
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 CBimPaletteSet *m_pMySelft;
|
|
|
|
};
|
|
|
|
typedef Singleton<CBimPaletteSet> g_bimPaletteSet;
|
|
|