FLImaging 6.5.8.1
GUIListCtrlMassive.h
1#pragma once
2
9#include "GUIWndCtrlBase.h"
10#include <map>
11
13namespace FLImaging
14{
16 namespace GUI
17 {
18 class FL_EXPORT CGUIHeaderCtrl : public CHeaderCtrl
19 {
20 public:
21 CGUIHeaderCtrl();
22 virtual ~CGUIHeaderCtrl();
23
24 DECLARE_MESSAGE_MAP()
25 afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult);
26 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
27 virtual void PreSubclassWindow();
28 };
29
36 class FL_EXPORT CGUIListCtrlMassive : public CListCtrl, public CGUIWndCtrlBase
37 {
38 public:
39 typedef struct sDropItem
40 {
41 Base::CFLArray<int32_t> flaSelectedIndex;
42 int32_t i32Destination;
43 CGUIListCtrlMassive* pFromWnd;
44 CGUIListCtrlMassive* pToWnd;
45 bool bToTheEnd;
46 }
47 SDropItem;
48
49 public:
57
64 CGUIListCtrlMassive(int32_t i32ItemCnt, CWnd* pParentWnd = nullptr);
65
73
81
82 public:
90 int32_t GetSelectedItemIndex();
91
99 int32_t GetFocusedItemIndex();
100
110 void SelectItem(int32_t i32Idx, UINT state, UINT stateMask);
111
119 CRect GetBoundaryRect();
120
128 CGUIHeaderCtrl* GetHeaderCtrlSubclass();
129
130 HWND CreateListCtrl(CWnd* pParentWnd);
131 HWND CreateListCtrl(CWnd* pParentWnd, DWORD dwStyle);
132 void ResizeListCtrl(CWnd* pParentWnd);
133 BOOL InitListCtrl();
134
135 BOOL InsertAllItems();
136 void PositionHeader();
137 virtual LRESULT ListViewNotify(LPARAM lParam);
138
139 int InsertColumn(_In_ int nCol, _In_z_ LPCTSTR lpszColumnHeading,
140 _In_ int nFormat = LVCFMT_LEFT, _In_ int nWidth = -1, _In_ int nSubItem = -1);
141
142 int InsertItem(_In_ int nItem, _In_z_ LPCTSTR lpszItem);
143
144 int DeleteItem(_In_ int nItem);
145
146 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);
147
148 virtual const CResult SetItemText(int32_t i32Row, int32_t i32Column, const wchar_t* pWcsText);
149
150 int GetRowFromPoint(CPoint& point, int* col) const;
151
152 virtual BOOL DeleteAllItems();
153 virtual void EnableEdit(bool bEnable);
154 virtual void EnableEditColumn(bool bEnable, const int32_t i32Column);
155 virtual void EnableEditColumn(bool bEnable, const Base::CFLArray<int32_t>& flaColumns);
156 virtual void EnableEditRow(bool bEnable, const int32_t i32Row);
157 virtual void EnableEditRow(bool bEnable, const Base::CFLArray<int32_t>& flaRows);
158 virtual bool IsEditEnabled(int32_t i32Row, int32_t i32Column)const;
159 virtual bool IsEditEnabledRow(int32_t i32Row)const;
160 virtual bool IsEditEnabledColumn(const int32_t i32Column)const;
161
162 virtual bool IsColumnVisible(const int32_t i32Column) const;
163 virtual void ShowColumn(const int32_t i32Column, bool bShow);
164 virtual void ShowColumns(const Base::CFLArray<int32_t>& flaColumns, bool bShow);
165
166 virtual bool IsDragAndDropEnabled()const;
167 virtual void EnableDragAndDrop(bool bEnable);
168
169 virtual const CResult RearrangePageOrder(Base::CFLArray<int32_t>& flaIndices, int32_t i32TargetIndex);
170
171 virtual void RedrawScrollBarPosition(bool bVScrollBar = true);
172
173 protected:
174 virtual CEdit* EditSubLabel(int nItem, int nCol);
175 virtual void OnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult);
176 virtual void DropItemOnList(CGUIListCtrlMassive* pDragList, CGUIListCtrlMassive* pDropList);
177 virtual int32_t GetMouseScrollMode(int32_t* pI32DeltaY = nullptr);
178 virtual void AutoScroll();
179 virtual void DestroyDragImage();
180
181 protected:
182 int32_t m_i32ItemCnt;
183
184 std::vector<Base::CFLString<wchar_t>>& m_vctColumn;
185 std::vector<int>& m_vctColumnWidth;
186 std::vector<bool>& m_vctEnableEditColumn;
187 std::vector<bool>& m_vctColumnVisibility;
188
189 std::vector<Base::CFLString<wchar_t>>& m_vctRow;
190 std::vector<bool>& m_vctEnableEditRows;
191
192 std::vector<std::vector<Base::CFLString<wchar_t>> >& m_vct2Item;
193
194 CBrush m_brBackground;
195
196 CGUIHeaderCtrl* m_pCtrlHeader;
197 CEdit* m_pInPlaceEdit;
198
199 bool m_bDragAndDropEnabled;
200 CImageList* m_pDragImage;
201 bool m_bIsDragging;
202 bool m_bSetFirstColIndex;
203 int32_t m_i32DragIndex;
204 int32_t m_i32DropIndex;
205 int32_t m_i32MovingRegion;
206
207 friend class CGUIDialogImagePageList;
208
209 public:
210 DECLARE_MESSAGE_MAP()
211 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
212 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
213 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
214 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
215 afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult);
216 afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
217 void OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
218 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
219 afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
220 afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
221 LRESULT OnEditDestroyed(WPARAM wParam, LPARAM lParam);
222 virtual BOOL PreTranslateMessage(MSG* pMsg);
223 virtual void PreSubclassWindow();
224 afx_msg void OnCaptureChanged(CWnd* pWnd);
225};
226 }
227}
Template type array class.
Definition RangeTree.h:19
FLImaging module execution result object.
Definition ResultsDef.h:1514
ListControl classes in very many data to store.
Definition GUIListCtrlMassive.h:37
CGUIListCtrlMassive(const CGUIListCtrlMassive &rh)
Copy constructor.
virtual ~CGUIListCtrlMassive()
Default destructor.
CGUIListCtrlMassive(int32_t i32ItemCnt, CWnd *pParentWnd=nullptr)
constructor