FLImaging 6.6.27.1
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 virtual const CResult InvertSelection();
182
183 protected:
184 virtual CEdit* EditSubLabel(int nItem, int nCol);
185 virtual void OnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult);
186 virtual void DropItemOnList(CGUIListCtrlMassive* pDragList, CGUIListCtrlMassive* pDropList);
187 virtual int32_t GetMouseScrollMode(int32_t* pI32DeltaY = nullptr);
188 virtual void AutoScroll();
189 virtual void DestroyDragImage();
190
191 protected:
192 int32_t m_i32ItemCnt;
193
194 std::vector<Base::CFLString<wchar_t>>& m_vctColumn;
195 std::vector<int>& m_vctColumnWidth;
196 std::vector<bool>& m_vctEnableEditColumn;
197 std::vector<bool>& m_vctColumnVisibility;
198
199 std::vector<std::pair<Base::CFLString<wchar_t>, bool>>& m_vctRow;
200 std::vector<bool>& m_vctEnableEditRows;
201
202 std::vector<std::vector<Base::CFLString<wchar_t>> >& m_vct2Item;
203 std::set<int32_t>& m_setInvisibleIndex;
204
205 CBrush m_brBackground;
206
207 CGUIHeaderCtrl* m_pCtrlHeader;
208 CEdit* m_pInPlaceEdit;
209
210 bool m_bDragAndDropEnabled;
211 CImageList* m_pDragImage;
212 bool m_bIsDragging;
213 bool m_bSetFirstColIndex;
214 int32_t m_i32DragIndex;
215 int32_t m_i32DropIndex;
216 int32_t m_i32MovingRegion;
217
218 friend class CGUIDialogImagePageList;
219
220 public:
221 DECLARE_MESSAGE_MAP()
222 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
223 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
224 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
225 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
226 afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult);
227 afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
228 afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
229 void OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
230 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
231 afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
232 afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
233 LRESULT OnEditDestroyed(WPARAM wParam, LPARAM lParam);
234 LRESULT OnInternalHandleKeyUp(WPARAM wParam, LPARAM lParam);
235 virtual BOOL PreTranslateMessage(MSG* pMsg);
236 virtual void PreSubclassWindow();
237 afx_msg void OnCaptureChanged(CWnd* pWnd);
238};
239 }
240}
Template type 의 배열 클래스.
Definition FLArray.h:53
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1596
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