11#include <unordered_map>
12#include "DefinitionsGUI.h"
13#include "GUIStyledCtrlBase.h"
15#define AFX_STRETCH_DELTA 2
24 class CGUIPaneProperties;
27 class CGUIPropertyGridPropertyDropdownList;
28 class CGUIPropertyGridPropertyViewGraphList;
29 class CGUIPropertyGridPropertyViewImageList;
30 class CGUIPropertyGridPropertyView3DList;
31 class CGUIPropertyGridPropertyBase;
32 class CGUIPropertyGridToolTipCtrl;
33 class CGUIPropertyGridPropertyCategory;
34 class CGUIPropertyGridPropertyRadioButtonGroup;
35 class CGUIPropertyGridPropertyRadioButton;
36 class CGUIPropertyGridPropertySliderDualHandle;
37 class CGUIScrollBarOwnerDrawn;
54 friend class CGUIPropertyGridPropertySliderDualHandle;
55 friend class CGUIPropertyGridPropertySlider;
56 friend class CGUIPropertyGridPropertyDraggableSpin;
57 friend class CGUIDialogPropertyImageFigureDrawingAttribute;
58 friend class CGUIPropertyGridPropertyCategory;
59 friend class CGUIPropertyGridPropertyCheckBox;
60 friend class CGUIPropertyGridPropertySheet;
443 virtual void HighlightPropertyWithBlink(
const CGUIPropertyItemBase* pItem, COLORREF clrHighlight = Foundation::FLLOGOCOLOR, uint32_t u32BlinkCount = 3, uint32_t u32IntervalMs = 200);
462 virtual void HighlightPropertyWithBlink(
const CGUIPropertyItemBase* pItem1,
const CGUIPropertyItemBase* pItem2, COLORREF clrHighlight = Foundation::FLLOGOCOLOR, uint32_t u32BlinkCount = 3, uint32_t u32IntervalMs = 200);
479 virtual void HighlightPropertyWithBlink(
const std::vector<const CGUIPropertyItemBase*>& vctItems, COLORREF clrHighlight = Foundation::FLLOGOCOLOR, uint32_t u32BlinkCount = 3, uint32_t u32IntervalMs = 200);
481 virtual const CResult InsertItem(CGUIPropertyItemBase* pItem,
const CGUIPropertyItemBase* pItemNewParent,
EAppendPosition eAppendPosition,
bool bAdjustLayout,
bool bAutoLoad);
482 virtual const CResult InsertItem(CGUIPropertyItemBase* pItem,
EInsertPosition eInsertPosition,
const CGUIPropertyItemBase* pItemInsertPosition,
bool bAdjustLayout,
bool bAutoLoad);
483 virtual const CResult RemoveItem(CGUIPropertyItemBase* pItem,
bool bDeletePropertyGridProperty,
bool bAdjustLayout);
485 virtual const CResult PreDeleteProperty(CMFCPropertyGridProperty* pProperty);
487 DeclareGetClassType();
490 virtual CMFCPropertyGridProperty* HitTest(CPoint pt, CMFCPropertyGridProperty::ClickArea* pnArea = NULL, BOOL bPropsOnly = FALSE)
const;
492 virtual BOOL RemoveProperty(CMFCPropertyGridProperty*& pProp, BOOL bDelete, BOOL bRedraw, BOOL bAdjustLayout);
494 void EnsureVisible(CMFCPropertyGridProperty* pProp, BOOL bExpandParents = FALSE);
495 virtual void SetAlphabeticMode(BOOL bSet = TRUE);
497 virtual void SetParentMainFrame(CGUIMainFrame* pMainFrame);
498 virtual CGUIMainFrame* GetParentMainFrame()
const;
501 virtual int GetTotalItemsWithExtraRows(BOOL bIncludeHidden = TRUE)
const;
503 void SetFontBold(HFONT hfont);
504 void SetFont(HFONT hfont);
505 virtual CFont* GetFontBold();
507 virtual void SetManagerPropertyItem(CGUIManagerPropertyItem* pMgr);
508 virtual const CGUIManagerPropertyItem* GetManagerPropertyItem()
const;
511 virtual void AddPendingUpdateValue(
const CMFCPropertyGridProperty* pPGP,
const COleVariant& var);
512 virtual void AddPendingUpdateValueMin(
const CGUIPropertyGridPropertySliderDualHandle* pPGP,
const COleVariant& var);
513 virtual void AddPendingUpdateValueMax(
const CGUIPropertyGridPropertySliderDualHandle* pPGP,
const COleVariant& var);
514 virtual const CResult GetPendingUpdateValue(
const CMFCPropertyGridProperty* pPGP, COleVariant& varRes)
const;
515 virtual const CResult GetPendingUpdateValueMin(
const CGUIPropertyGridPropertySliderDualHandle* pPGP, COleVariant& varRes)
const;
516 virtual const CResult GetPendingUpdateValueMax(
const CGUIPropertyGridPropertySliderDualHandle* pPGP, COleVariant& varRes)
const;
517 virtual void AddPendingUpdateVisibility(
const CMFCPropertyGridProperty* pPGP,
bool bVisibility);
518 virtual const CResult GetPendingUpdateVisibility(
const CMFCPropertyGridProperty* pPGP,
bool& bVisibility)
const;
520 virtual void OnDrawList(CDC* pDC)
override;
521 virtual void DrawPropertyDefault(CDC* pDC, CGUIPropertyGridPropertyBase* pPgp)
const;
522 virtual void DrawRadioButtonGroupBox(CDC* pDC, CGUIPropertyGridPropertyRadioButtonGroup* pPropRGB)
const;
523 virtual int OnDrawProperty(CDC* pDC, CMFCPropertyGridProperty* pProp)
const override;
524 virtual int OnDrawProperty(CDC* pDC, CGUIPropertyGridPropertyCategory* pPropCat)
const;
525 static void OnDrawComboDropButton(CDC* pDC, CRect rect, BOOL bDisabled, BOOL bDropped, BOOL bHighlighted, CMFCToolBarComboBoxButton* pButton);
526 static void OnDrawButtonBorder(CDC* pDC, CMFCToolBarButton* pButton, CRect rect, CMFCVisualManager::AFX_BUTTON_STATE state);
528 virtual CList<CMFCPropertyGridProperty*, CMFCPropertyGridProperty*>* GetTopLevelProperties();
529 virtual BOOL EndEditItem(BOOL bUpdateData = TRUE)
override;
532 virtual void SetScrollSizes();
533 virtual void ReposProperties();
541 void RecursivelySetPropertySliderWidth(CMFCPropertyGridProperty* pParent =
nullptr);
561 void AddVisibleRows(CGUIPropertyGridPropertyBase* pProp, std::vector<CGUIPropertyGridPropertyBase*>& vctPPgpItems);
629 void SetTopRow(
const std::vector<CGUIPropertyGridPropertyBase*>& vctPPgpItems, int32_t i32Top);
653 CMFCPropertyGridProperty* m_pPropLButtonDown;
655 CGUIPaneProperties* m_pParentPane;
656 CGUIMainFrame* m_pParentMainFrame;
657 CGUIPropertyGridPropertyBase* m_pPropertyPrevHit;
658 CGUIPropertyGridToolTipCtrl* m_pIPToolTip;
659 CGUIScrollBarOwnerDrawn* m_pOwnerDrawScrollBarVert;
660 CGUIScrollBarOwnerDrawn* m_pOwnerDrawScrollBarHorz;
661 std::unordered_map<CMFCPropertyGridProperty*, COleVariant>& m_mapPendingValue;
662 std::unordered_map<CGUIPropertyGridPropertySliderDualHandle*, COleVariant>& m_mapPendingValueMin;
663 std::unordered_map<CGUIPropertyGridPropertySliderDualHandle*, COleVariant>& m_mapPendingValueMax;
664 std::unordered_map<CMFCPropertyGridProperty*, bool>& m_mapPendingVisibility;
667 float m_f32LeftColWidthRatio;
668 int32_t m_i32LeftColWidth;
670 std::vector<CGUIPropertyGridPropertyBase*>& m_vctPPgpBlink;
671 COLORREF m_clrHighlight;
672 uint32_t m_u32NeedToBlinkCnt;
673 uint32_t m_u32CurrBlinkCnt;
675 bool m_bPropertySliderDeprecatedExists;
677 CGUIStyledCtrlBase m_scbCategory;
678 CGUIStyledCtrlBase m_scbRadioBtnGroup;
679 CGUIStyledCtrlBase m_scbPropBase;
681 CGUIManagerPropertyItem* m_pMgrRef;
685 friend class CGUIManagerPane;
686 friend class CGUIPaneProperties;
687 friend class CGUIMenuItemProperty;
688 friend class CGUIPropertyGridPropertyDropdownList;
689 friend class CGUIPropertyGridPropertyViewListBase;
690 friend class CGUIPropertyGridPropertyBase;
691 friend class CGUIPropertyGridPropertyColor;
692 friend class CGUIPropertyItemRadioButton;
693 friend class CGUIPropertyItemSliderDualHandle;
694 friend class CGUIPropertyItemCheckBox;
695 friend class CGUIPropertyItemCategory;
696 friend class CGUIPropertyItemText;
697 friend class CGUIPropertyItemFont;
698 friend class CGUIPropertyItemBase;
699 friend class CGUIPropertyItemRadioButtonGroup;
700 friend class CGUIPropertyGridPropertyRadioButtonGroup;
701 friend class CGUIPropertyItemCheckBox3State;
702 friend class CGUIDialogProperty;
703 friend class CGUIDialogLicenseFeatures;
704 friend class CGUIManagerPropertyItem;
707 DECLARE_MESSAGE_MAP()
708 afx_msg
void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
709 afx_msg BOOL OnMouseWheel(UINT nFlags,
short zDelta, CPoint pt);
710 afx_msg
void OnMouseHWheel(UINT nFlags,
short zDelta, CPoint pt);
711 afx_msg
void OnMouseMove(UINT nFlags, CPoint point);
712 afx_msg
void OnLButtonUp(UINT nFlags, CPoint point);
713 afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
714 afx_msg
void OnSetFocus(CWnd* pOldWnd);
715 afx_msg
void OnKillFocus(CWnd* pNewWnd);
716 afx_msg
int OnCreate(LPCREATESTRUCT lpCreateStruct);
717 afx_msg
void OnRButtonDblClk(UINT nFlags, CPoint point);
718 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
719 virtual
void PreSubclassWindow();
720 virtual BOOL PreTranslateMessage(MSG* pMsg);
721 afx_msg
void OnEnable(BOOL bEnable);
722 afx_msg
void OnCancelMode();
723 afx_msg
void OnDestroy();
724 LRESULT OnScrollBarPosChanged(WPARAM wParam, LPARAM lParam);
725 LRESULT OnSliderOwnerDrawnPosChanged(WPARAM wParam, LPARAM lParam);
726 LRESULT OnSliderOwnerDrawnRedraw(WPARAM wParam, LPARAM lParam);
727 afx_msg BOOL OnNeedTipText(UINT
id, NMHDR* pNMH, LRESULT* pResult);
728 afx_msg
void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
729 afx_msg
void OnLButtonDown(UINT nFlags, CPoint point);
730 afx_msg
void OnRButtonDown(UINT nFlags, CPoint point);
731 afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
732 afx_msg
void OnHeaderItemChanged(NMHDR* pNMHDR, LRESULT* pResult);
733 afx_msg
void OnLButtonDblClk(UINT nFlags, CPoint point);
734 afx_msg
void OnSize(UINT nType,
int cx,
int cy);
735 afx_msg
void OnTimer(UINT_PTR nIDEvent);
736 afx_msg
void OnNMSheetCellChanged(NMHDR* pNMHDR, LRESULT* pResult);
738 void TrackToolTip(CPoint pt);
739 virtual
void Init() override;
740 virtual
void OnDraw(CDC* pDC) override;
741 virtual
void OnClickButton(CPoint point) override;
브로드캐스트 메시지 클래스
Definition FLImagingBase/BroadcastMessage.h:27
점을 표현하는 간략화된 클래스
Definition FLImagingBase/TPoint.h:37
직사각형을 표현하는 간략화된 클래스
Definition FLImagingBase/TRect.h:37
FLImaging 모듈의 수행 결과 객체
Definition FLImagingBase/ResultsDef.h:1704
CGUIPropertyItemBase 객체들을 관리하고 CGUIPropertyGridCtrl 과의 동기화를 수행하는 매니저 클래스입니다.
Definition GUIManagerPropertyItem.h:46
virtual void SetCustomColorGroupBackground(COLORREF color)
그룹 배경의 사용자 정의 색상을 설정합니다.
virtual CGUIPaneProperties * GetParentPane() const
부모 패널을 가져옵니다.
void AddVisibleRows(CGUIPropertyGridPropertyBase *pProp, std::vector< CGUIPropertyGridPropertyBase * > &vctPPgpItems)
pProp 와 현재 화면에 표시되는 하위 항목들을 재귀적으로 vctPPgpItems 에 추가합니다. 접혀 있는 항목은 자기 자신만 추가되며 자식은 행으로 취급하지 않습니다....
virtual void SetCustomColorGridLine(COLORREF color)
그리드 선의 사용자 정의 색상을 설정합니다.
virtual const CResult SetLeftColumnWidthRatio(float f32Ratio=0.5f, ESizeMode eSizeMode=ESizeMode_Ratio)
왼쪽 열 너비를 비율로 설정합니다.
virtual COLORREF GetCustomColorGridLine() const
그리드 선의 사용자 정의 색상을 가져옵니다.
virtual COLORREF GetCustomColorGroupSubItemBackground() const
그룹의 서브아이템 배경에 대한 사용자 정의 색상을 가져옵니다.
virtual void HighlightPropertyWithBlink(const CGUIPropertyItemBase *pItem, COLORREF clrHighlight=Foundation::FLLOGOCOLOR, uint32_t u32BlinkCount=3, uint32_t u32IntervalMs=200)
프로퍼티 항목을 점멸 효과와 함께 강조 표시합니다.
virtual bool IsGridLineVisible() const
그리드 선의 표시 여부를 확인합니다.
virtual COLORREF GetCustomColorGroupText() const
그룹 텍스트의 사용자 정의 색상을 가져옵니다.
virtual COLORREF GetCustomColorGroupLine() const
그룹을 묶는 라인의 사용자 정의 색상을 가져옵니다.
virtual void SetCustomColorGroupSubItemBackground(COLORREF color)
그룹의 서브아이템 배경에 대한 사용자 정의 색상을 설정합니다.
virtual void SetParentPane(CGUIPaneProperties *pParentPane)
부모 패널을 설정합니다.
virtual void OnReceiveBroadcast(const Base::CBroadcastMessage *pMessage) override
Callback 함수. BroadcastMessage를 수신받는 함수
virtual void HighlightPropertyWithBlink(const std::vector< const CGUIPropertyItemBase * > &vctItems, COLORREF clrHighlight=Foundation::FLLOGOCOLOR, uint32_t u32BlinkCount=3, uint32_t u32IntervalMs=200)
여러 프로퍼티 항목을 점멸 효과와 함께 강조 표시합니다.
virtual void AdjustLayoutAsync()
컨트롤의 레이아웃을 조정합니다.(비동기 함수) 프로퍼티 아이템을 새로 추가하거나 삭제, Show/Hide 하는 등 레이아웃 변경이 있을 때에만 호출합니다.
virtual const CResult SetLeftColumnWidthSizeMode(ESizeMode eSizeMode=ESizeMode_Ratio)
왼쪽 열 너비의 크기 모드를 설정합니다.
virtual float GetLeftColumnWidthRatio() const
왼쪽 열 너비 비율을 반환합니다.
virtual bool AdjustLayoutForVisibility()
CGUIPropertyItemBase::SetVisible() 호출 이후, 컨트롤의 레이아웃을 조정하기 위해 사용하는 함수입니다. 프로퍼티 아이템을 새로 추가하거나 삭제하는 경우에는...
virtual void AdjustLayout() override
컨트롤의 레이아웃을 조정합니다. 프로퍼티 아이템을 새로 추가하거나 삭제, Show/Hide 하는 등 레이아웃 변경이 있을 때에만 호출합니다.
virtual void HighlightPropertyWithBlink(const CGUIPropertyItemBase *pItem1, const CGUIPropertyItemBase *pItem2, COLORREF clrHighlight=Foundation::FLLOGOCOLOR, uint32_t u32BlinkCount=3, uint32_t u32IntervalMs=200)
두 개의 프로퍼티 항목을 점멸 효과와 함께 강조 표시합니다.
int32_t GetPageRowCount() const
목록 영역에 한 번에 표시 가능한 행 수를 반환합니다.
virtual ESizeMode GetLeftColumnWidthSizeMode() const
왼쪽 열 너비의 크기 모드를 반환합니다.
virtual COLORREF GetCustomColorBackground() const
배경의 사용자 정의 색상을 가져옵니다.
virtual COLORREF GetCustomColorGroupBackground() const
그룹 배경의 사용자 정의 색상을 가져옵니다.
virtual ~CGUIPropertyGridCtrl()
속성 그리드 컨트롤의 소멸자.
void InternalEnsureVisible(const std::vector< CGUIPropertyGridPropertyBase * > &vctPPgpItems)
vctPPgpItems 의 모든 상위 항목을 펼친 뒤 해당 항목들이 보이도록 스크롤합니다. 대상이 한 페이지 안에 모두 들어가면 그룹 전체를 세로 중앙에 배치하고,...
bool IsRowFullyVisible(const CGUIPropertyGridPropertyBase *pProp) const
pProp 의 행이 목록 표시 영역 안에 온전히 들어와 있는지 확인합니다.
virtual void ShowGridLine(bool bShow)
그리드 선의 표시 여부를 설정합니다.
virtual void SetCustomColorGroupLine(COLORREF color)
그룹을 묶는 라인의 사용자 정의 색상을 설정합니다.
virtual void SetCustomColorBackground(COLORREF color)
배경의 사용자 정의 색상을 설정합니다.
CGUIPropertyGridCtrl()
속성 그리드 컨트롤의 기본 생성자.
void SetTopRow(const std::vector< CGUIPropertyGridPropertyBase * > &vctPPgpItems, int32_t i32Top)
i32Top 번째 행이 화면 최상단에 오도록 그리드를 스크롤합니다.
void GetVisibleRows(std::vector< CGUIPropertyGridPropertyBase * > &vctPPgpItems)
그리드에 현재 표시 중인 모든 행을 위에서 아래 순서로 평탄화하여 목록을 만듭니다. 목록 내 인덱스가 곧 해당 항목의 행 번호입니다.
void GetPropertyByVisibleOrder(std::vector< CMFCPropertyGridProperty * > &vctProps, CMFCPropertyGridProperty *pParent=nullptr) const
화면 표시 순서에 따라 속성을 가져옵니다.
virtual const CResult SetLeftColumnWidth(int32_t i32LeftColumnWidth, ESizeMode eSizeMode=ESizeMode_Fixed)
왼쪽 열 너비(이름 영역)를 설정합니다.
virtual void SetCustomColorGroupText(COLORREF color)
그룹 텍스트의 사용자 정의 색상을 설정합니다.
void SetDescriptionHeight(int32_t i32Height, bool bAdjustLayout=true)
설명 영역의 높이를 설정합니다.
프로퍼티 아이템 베이스 클래스
Definition GUIPropertyItemBase.h:319
Definition D2DObject.h:12
EInsertPosition
Definition FLImagingGUI/DefinitionsGUI.h:15460
ESizeMode
UI 요소의 크기 지정 방식을 정의합니다.
Definition FLImagingGUI/DefinitionsGUI.h:16422
@ ESizeMode_Ratio
비율 기반 크기.
Definition FLImagingGUI/DefinitionsGUI.h:16454
@ ESizeMode_Fixed
고정 크기 (예: 픽셀 단위).
Definition FLImagingGUI/DefinitionsGUI.h:16443
EOrientation
방향
Definition FLImagingGUI/DefinitionsGUI.h:9901
@ EOrientation_Vertical
수직 방향
Definition FLImagingGUI/DefinitionsGUI.h:9908
EAppendPosition
Definition FLImagingGUI/DefinitionsGUI.h:15480
EGUIControlState
GUI 컨트롤 상태 열거형
Definition FLImagingGUI/DefinitionsGUI.h:16264