FLImaging 6.10.23.2
GUIListCtrlMassive.h
1#pragma once
2
9#include "GUIWndCtrlBase.h"
10#include <map>
11#include <set>
12
14namespace FLImaging
15{
17 namespace GUI
18 {
19 class FL_EXPORT CGUIHeaderCtrl : public CHeaderCtrl
20 {
21 public:
22 CGUIHeaderCtrl();
23 virtual ~CGUIHeaderCtrl();
24
25 DECLARE_MESSAGE_MAP()
26 afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult);
27 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
28 virtual void PreSubclassWindow();
29 };
30
37 class FL_EXPORT CGUIListCtrlMassive : public CListCtrl, public CGUIWndCtrlBase
38 {
39 public:
40 typedef struct sDropItem
41 {
42 Base::CFLArray<int32_t> flaSelectedIndex;
43 int32_t i32Destination;
44 CGUIListCtrlMassive* pFromWnd;
45 CGUIListCtrlMassive* pToWnd;
46 bool bToTheEnd;
47 }
48 SDropItem;
49
50 public:
58
65 CGUIListCtrlMassive(int32_t i32ItemCnt, CWnd* pParentWnd = nullptr);
66
74
82
83 public:
92
101
111 void SelectItem(int32_t i32Idx, UINT state, UINT stateMask);
112
121
129 CGUIHeaderCtrl* GetHeaderCtrlSubclass();
130
131 HWND CreateListCtrl(CWnd* pParentWnd);
132 HWND CreateListCtrl(CWnd* pParentWnd, DWORD dwStyle);
133 void ResizeListCtrl(CWnd* pParentWnd);
134 BOOL InitListCtrl();
135
136 BOOL InsertAllItems(bool bClearInvisibleIndex = true);
137 BOOL SetItemCount(int32_t i32Count);
138 void PositionHeader();
139 virtual LRESULT ListViewNotify(LPARAM lParam);
140
141 int InsertColumn(_In_ int nCol, _In_z_ LPCTSTR lpszColumnHeading,
142 _In_ int nFormat = LVCFMT_LEFT, _In_ int nWidth = -1, _In_ int nSubItem = -1);
143
144 int InsertItem(_In_ int nItem, _In_z_ LPCTSTR lpszItem); // Real Index
145 int DeleteItem(_In_ int nItem); // Real Index
146
147 BOOL SetItem(_In_ int nItem, _In_ int nSubItem, _In_ UINT nMask, _In_opt_z_ LPCTSTR lpszItem, _In_ int nImage, _In_ UINT nState, _In_ UINT nStateMask, _In_ LPARAM lParam);
148
149 virtual const CResult SetItemText(int32_t i32Row, int32_t i32Column, const wchar_t* pWcsText);
150
151 int GetRowFromPoint(CPoint& point, int* col) const;
152
153 virtual BOOL DeleteAllItems();
154 virtual void EnableEdit(bool bEnable);
155 virtual void EnableEditColumn(bool bEnable, const int32_t i32Column);
156 virtual void EnableEditColumn(bool bEnable, const Base::CFLArray<int32_t>& flaColumns);
157 virtual void EnableEditRow(bool bEnable, const int32_t i32Row);
158 virtual void EnableEditRow(bool bEnable, const Base::CFLArray<int32_t>& flaRows);
159 virtual bool IsEditEnabled(int32_t i32Row, int32_t i32Column)const;
160 virtual bool IsEditEnabledRow(int32_t i32Row)const;
161 virtual bool IsEditEnabledColumn(const int32_t i32Column)const;
162
163 // 가시 인덱스 -> 실제 인덱스 : hidden/visible row 고려한 실제 데이터 인덱스
164 virtual int32_t GetRealRowFromVisibleIndex(int32_t i32Idx) const;
165 virtual int32_t GetVisibleIndexFromRealRow(int32_t i32Row) const;
166 virtual bool IsRowVisible(const int32_t i32Row) const;
167 virtual void ShowRow(const int32_t i32Row, bool bShow);
168 virtual void ShowRows(const Base::CFLArray<int32_t>& flaRows, bool bShow, bool bHideElse = true);
169 virtual void ShowAllRows();
170
171 virtual bool IsColumnVisible(const int32_t i32Column) const;
172 virtual void ShowColumn(const int32_t i32Column, bool bShow);
173 virtual void ShowColumns(const Base::CFLArray<int32_t>& flaColumns, bool bShow);
174
175 virtual bool IsDragAndDropEnabled()const;
176 virtual void EnableDragAndDrop(bool bEnable);
177
178 virtual const CResult RearrangePageOrder(Base::CFLArray<int32_t>& flaIndices, int32_t i32TargetIndex);
179
180 virtual void RedrawScrollBarPosition(bool bVScrollBar = true);
181
182 protected:
183 virtual CEdit* EditSubLabel(int nItem, int nCol);
184 virtual void OnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult);
185 virtual void DropItemOnList(CGUIListCtrlMassive* pDragList, CGUIListCtrlMassive* pDropList);
186 virtual int32_t GetMouseScrollMode(int32_t* pI32DeltaY = nullptr);
187 virtual void AutoScroll();
188 virtual void DestroyDragImage();
189
190 protected:
191 int32_t m_i32ItemCnt;
192
193 std::vector<Base::CFLString<wchar_t>>& m_vctColumn;
194 std::vector<int>& m_vctColumnWidth;
195 std::vector<bool>& m_vctEnableEditColumn;
196 std::vector<bool>& m_vctColumnVisibility;
197
198 std::vector<std::pair<Base::CFLString<wchar_t>, bool>>& m_vctRow;
199 std::vector<bool>& m_vctEnableEditRows;
200
201 std::vector<std::vector<Base::CFLString<wchar_t>> >& m_vct2Item;
202 std::set<int32_t>& m_setInvisibleIndex;
203
204 CBrush m_brBackground;
205
206 CGUIHeaderCtrl* m_pCtrlHeader;
207 CEdit* m_pInPlaceEdit;
208
209 bool m_bDragAndDropEnabled;
210 CImageList* m_pDragImage;
211 bool m_bIsDragging;
212 bool m_bSetFirstColIndex;
213 int32_t m_i32DragIndex;
214 int32_t m_i32DropIndex;
215 int32_t m_i32MovingRegion;
216
217 friend class CGUIDialogImagePageList;
218
219 public:
220 DECLARE_MESSAGE_MAP()
221 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
222 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
223 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
224 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
225 afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult);
226 afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
227 afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
228 void OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
229 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
230 afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
231 afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
232 LRESULT OnEditDestroyed(WPARAM wParam, LPARAM lParam);
233 LRESULT OnInternalHandleKeyUp(WPARAM wParam, LPARAM lParam);
234 virtual BOOL PreTranslateMessage(MSG* pMsg);
235 virtual void PreSubclassWindow();
236 afx_msg void OnCaptureChanged(CWnd* pWnd);
237};
238 }
239}
Template type 의 배열 클래스.
Definition FLArray.h:53
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1631
CGUIListCtrlMassive(const CGUIListCtrlMassive &rh)
복사 생성자
void SelectItem(int32_t i32Idx, UINT state, UINT stateMask)
아이템을 선택 또는 포커스하는 함수
int32_t GetSelectedItemIndex()
선택된 아이템 인덱스를 얻어 오는 함수
virtual ~CGUIListCtrlMassive()
기본 소멸자
CRect GetBoundaryRect()
리스트컨트롤의 사각형을 얻어 오는 함수
CGUIHeaderCtrl * GetHeaderCtrlSubclass()
CGUIHeaderCtrl 클래스로 서브클래싱 된 헤더컨트롤 포인터를 얻어 오는 함수
int32_t GetFocusedItemIndex()
선택된 아이템 인덱스를 얻어 오는 함수
CGUIListCtrlMassive(int32_t i32ItemCnt, CWnd *pParentWnd=nullptr)
생성자
Definition D2DObject.h:12