Files
envi-code/SourceCode/Code2026/CoreCommand/BimPaletteSet.h
T
2026-09-28 15:28:50 +08:00

127 lines
2.8 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;