FLImaging 7.1.2.3
GUIPropertyGridCtrl.h
1#pragma once
9
10#include <vector>
11#include <unordered_map>
12#include "DefinitionsGUI.h"
13
14#define AFX_STRETCH_DELTA 2
15
17namespace FLImaging
18{
20 namespace GUI
21 {
22 class CGUIMainFrame;
23 class CGUIPaneProperties;
26 class CGUIPropertyGridPropertyDropdownList;
27 class CGUIPropertyGridPropertyViewGraphList;
28 class CGUIPropertyGridPropertyViewImageList;
29 class CGUIPropertyGridPropertyView3DList;
30 class CGUIPropertyGridPropertyBase;
31 class CGUIPropertyGridToolTipCtrl;
32 class CGUIPropertyGridPropertyCategory;
33 class CGUIPropertyGridPropertyRadioButtonGroup;
34 class CGUIPropertyGridPropertyRadioButton;
35 class CGUIPropertyGridPropertySliderDualHandle;
36 class CGUIScrollBarOwnerDrawn;
37
50 class FL_EXPORT CGUIPropertyGridCtrl : public CMFCPropertyGridCtrl, public Base::CFLBase
51 {
52 friend class CGUIPropertyGridPropertySliderDualHandle;
53 friend class CGUIPropertyGridPropertySlider;
54 friend class CGUIPropertyGridPropertyDraggableSpin;
55 friend class CGUIDialogPropertyImageFigureDrawingAttribute;
56 public:
69
82
93 virtual void AdjustLayout() override;
94
110
121 virtual void AdjustLayoutAsync();
122
134 void GetPropertyByVisibleOrder(std::vector<CMFCPropertyGridProperty*>& vctProps, CMFCPropertyGridProperty* pParent = nullptr) const;
135
147 virtual void SetParentPane(CGUIPaneProperties* pParentPane);
148
160 virtual CGUIPaneProperties* GetParentPane() const;
161
171 virtual void SetLeftColumnWidth(int32_t i32LeftColumnWidth);
172
182 virtual COLORREF GetCustomColorGroupText() const;
183
193 virtual void SetCustomColorGroupText(COLORREF color);
194
204 virtual COLORREF GetCustomColorGroupBackground() const;
205
215 virtual void SetCustomColorGroupBackground(COLORREF color);
216
217 virtual const CResult InsertItem(CGUIPropertyItemBase* pItem, const CGUIPropertyItemBase* pItemNewParent, EAppendPosition eAppendPosition, bool bAdjustLayout, bool bAutoLoad);
218 virtual const CResult InsertItem(CGUIPropertyItemBase* pItem, EInsertPosition eInsertPosition, const CGUIPropertyItemBase* pItemInsertPosition, bool bAdjustLayout, bool bAutoLoad);
219 virtual const CResult RemoveItem(CGUIPropertyItemBase* pItem, bool bDeletePropertyGridProperty, bool bAdjustLayout);
220
221 virtual const CResult PreDeleteProperty(CMFCPropertyGridProperty* pProperty);
222
223 DeclareGetClassType();
224
225 public:
226 virtual CMFCPropertyGridProperty* HitTest(CPoint pt, CMFCPropertyGridProperty::ClickArea* pnArea = NULL, BOOL bPropsOnly = FALSE) const;
227 // bDelete == TRUE일 경우 DeleteProperty() 호출하고 종료
228 virtual BOOL RemoveProperty(CMFCPropertyGridProperty*& pProp, BOOL bDelete, BOOL bRedraw, BOOL bAdjustLayout);
229
230 void EnsureVisible(CMFCPropertyGridProperty* pProp, BOOL bExpandParents = FALSE);
231 virtual void SetAlphabeticMode(BOOL bSet = TRUE);
232
233 virtual void SetParentMainFrame(CGUIMainFrame* pMainFrame);
234 virtual CGUIMainFrame* GetParentMainFrame() const;
235
236 virtual const CGUIScrollBarOwnerDrawn* GetOwnerDrawScrollBar(EOrientation eOrientation = EOrientation_Vertical) const;
237 virtual int GetTotalItemsWithExtraRows(BOOL bIncludeHidden = TRUE) const;
238
239 void SetFontBold(HFONT hfont);
240 void SetFont(HFONT hfont);
241 virtual CFont* GetFontBold();
242
243 protected:
244 virtual void AddPendingUpdateValue(const CMFCPropertyGridProperty* pPGP, const COleVariant& var);
245 virtual void AddPendingUpdateValueMin(const CGUIPropertyGridPropertySliderDualHandle* pPGP, const COleVariant& var);
246 virtual void AddPendingUpdateValueMax(const CGUIPropertyGridPropertySliderDualHandle* pPGP, const COleVariant& var);
247 virtual const CResult GetPendingUpdateValue(const CMFCPropertyGridProperty* pPGP, COleVariant& varRes) const;
248 virtual const CResult GetPendingUpdateValueMin(const CGUIPropertyGridPropertySliderDualHandle* pPGP, COleVariant& varRes) const;
249 virtual const CResult GetPendingUpdateValueMax(const CGUIPropertyGridPropertySliderDualHandle* pPGP, COleVariant& varRes) const;
250 virtual void AddPendingUpdateVisibility(const CMFCPropertyGridProperty* pPGP, bool bVisibility);
251 virtual const CResult GetPendingUpdateVisibility(const CMFCPropertyGridProperty* pPGP, bool& bVisibility) const;
252
253 virtual int OnDrawProperty(CDC* pDC, CMFCPropertyGridProperty* pProp) const override;
254 virtual int OnDrawProperty(CDC* pDC, CGUIPropertyGridPropertyCategory* pPropCat) const;
255 virtual int OnDrawProperty(CDC* pDC, CGUIPropertyGridPropertyRadioButtonGroup* pPropRBG) const;
256 virtual int OnDrawProperty(CDC* pDC, CGUIPropertyGridPropertyRadioButton* pPropRB) const;
257 static void OnDrawComboDropButton(CDC* pDC, CRect rect, BOOL bDisabled, BOOL bDropped, BOOL bHighlighted, CMFCToolBarComboBoxButton* pButton);
258 static void OnDrawButtonBorder(CDC* pDC, CMFCToolBarButton* pButton, CRect rect, CMFCVisualManager::AFX_BUTTON_STATE state);
259 virtual void OnReceiveBroadcast(const Base::CBroadcastMessage* pMessage) override;
260 virtual CList<CMFCPropertyGridProperty*, CMFCPropertyGridProperty*>* GetTopLevelProperties();
261
262 virtual void SetScrollSizes();
263 virtual void ReposProperties();
264
265 private:
266 void RecursivelySetPropertySliderWidth(CMFCPropertyGridProperty* pParent = nullptr);
267
268 protected:
269 CMFCPropertyGridProperty* m_pPropLButtonDown;
270 Base::TPoint<int32_t> m_tpPrev;
271 CGUIPaneProperties* m_pParentPane;
272 CGUIMainFrame* m_pParentMainFrame;
273 CGUIPropertyGridPropertyBase* m_pPropertyPrevHit;
274 CGUIPropertyGridToolTipCtrl* m_pIPToolTip;
275 CGUIScrollBarOwnerDrawn* m_pOwnerDrawScrollBarVert;
276 CGUIScrollBarOwnerDrawn* m_pOwnerDrawScrollBarHorz;
277 std::unordered_map<CMFCPropertyGridProperty*, COleVariant>& m_mapPendingValue;
278 std::unordered_map<CGUIPropertyGridPropertySliderDualHandle*, COleVariant>& m_mapPendingValueMin;
279 std::unordered_map<CGUIPropertyGridPropertySliderDualHandle*, COleVariant>& m_mapPendingValueMax;
280 std::unordered_map<CMFCPropertyGridProperty*, bool>& m_mapPendingVisibility;
281
282 bool m_bPropertySliderDeprecatedExists;
283 CBrush m_brBrush;
284
285 friend class CGUIManagerPane;
286 friend class CGUIPaneProperties;
287 friend class CGUIMenuItemProperty;
288 friend class CGUIPropertyGridPropertyDropdownList;
289 friend class CGUIPropertyGridPropertyViewListBase;
290 friend class CGUIPropertyGridPropertyBase;
291 friend class CGUIPropertyGridPropertyColor;
292 friend class CGUIPropertyItemRadioButton;
293 friend class CGUIPropertyItemSliderDualHandle;
294 friend class CGUIPropertyItemCheckBox;
295 friend class CGUIPropertyItemCategory;
296 friend class CGUIPropertyItemText;
297 friend class CGUIPropertyItemFont;
298 friend class CGUIPropertyItemBase;
299 friend class CGUIPropertyItemRadioButtonGroup;
300 friend class CGUIDialogProperty;
301 friend class CGUIDialogLicenseFeatures;
302
303 public:
304 DECLARE_MESSAGE_MAP()
305 afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
306 afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
307 afx_msg void OnMouseHWheel(UINT nFlags, short zDelta, CPoint pt);
308 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
309 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
310 afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
311 afx_msg void OnSetFocus(CWnd* pOldWnd);
312 afx_msg void OnKillFocus(CWnd* pNewWnd);
313 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
314 afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
315 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
316 virtual void PreSubclassWindow();
317 virtual BOOL PreTranslateMessage(MSG* pMsg);
318 afx_msg void OnEnable(BOOL bEnable);
319 afx_msg void OnCancelMode();
320 afx_msg void OnDestroy();
321 LRESULT OnScrollBarPosChanged(WPARAM wParam, LPARAM lParam);
322 LRESULT OnSliderOwnerDrawnPosChanged(WPARAM wParam, LPARAM lParam);
323 LRESULT OnSliderOwnerDrawnRedraw(WPARAM wParam, LPARAM lParam);
324 afx_msg BOOL OnNeedTipText(UINT id, NMHDR* pNMH, LRESULT* pResult);
325 afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
326 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
327 afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
328 afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
329 afx_msg void OnHeaderItemChanged(NMHDR* pNMHDR, LRESULT* pResult);
330 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
331
332 void TrackToolTip(CPoint pt);
333 virtual void Init() override;
334 virtual void OnDraw(CDC* pDC) override;
335 virtual void OnClickButton(CPoint point) override;
336};
337 }
338}
브로드캐스트 메시지 클래스
Definition BroadcastMessage.h:27
FLImaging의 최상위 기저 클래스
Definition FLBase.h:36
점을 표현하는 간략화된 클래스
Definition TPoint.h:37
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1640
프로퍼티 창에 연결된 메뉴 아이템 클래스
Definition GUIMenuItemProperty.h:48
virtual void SetCustomColorGroupBackground(COLORREF color)
그룹 배경의 사용자 정의 색상을 설정합니다.
virtual CGUIPaneProperties * GetParentPane() const
부모 패널을 가져옵니다.
virtual COLORREF GetCustomColorGroupText() const
그룹 텍스트의 사용자 정의 색상을 가져옵니다.
virtual void SetParentPane(CGUIPaneProperties *pParentPane)
부모 패널을 설정합니다.
virtual void OnReceiveBroadcast(const Base::CBroadcastMessage *pMessage) override
Callback 함수. BroadcastMessage를 수신받는 함수
virtual void AdjustLayoutAsync()
컨트롤의 레이아웃을 조정합니다.(비동기 함수) 프로퍼티 아이템을 새로 추가하거나 삭제, Show/Hide 하는 등 레이아웃 변경이 있을 때에만 호출합니다.
virtual bool AdjustLayoutForVisibility()
CGUIPropertyItemBase::SetVisible() 호출 이후, 컨트롤의 레이아웃을 조정하기 위해 사용하는 함수입니다. 프로퍼티 아이템을 새로 추가하거나 삭제하는 경우에는...
virtual void AdjustLayout() override
컨트롤의 레이아웃을 조정합니다. 프로퍼티 아이템을 새로 추가하거나 삭제, Show/Hide 하는 등 레이아웃 변경이 있을 때에만 호출합니다.
virtual COLORREF GetCustomColorGroupBackground() const
그룹 배경의 사용자 정의 색상을 가져옵니다.
virtual ~CGUIPropertyGridCtrl()
속성 그리드 컨트롤의 소멸자.
CGUIPropertyGridCtrl()
속성 그리드 컨트롤의 기본 생성자.
void GetPropertyByVisibleOrder(std::vector< CMFCPropertyGridProperty * > &vctProps, CMFCPropertyGridProperty *pParent=nullptr) const
화면 표시 순서에 따라 속성을 가져옵니다.
virtual void SetLeftColumnWidth(int32_t i32LeftColumnWidth)
왼쪽 열 너비(이름 영역)를 설정합니다.
virtual void SetCustomColorGroupText(COLORREF color)
그룹 텍스트의 사용자 정의 색상을 설정합니다.
프로퍼티 아이템 베이스 클래스
Definition GUIPropertyItemBase.h:345
Definition D2DObject.h:12
EInsertPosition
Definition DefinitionsGUI.h:11160
EOrientation
방향
Definition DefinitionsGUI.h:5873
@ EOrientation_Vertical
수직 방향
Definition DefinitionsGUI.h:5880
EAppendPosition
Definition DefinitionsGUI.h:11180