Uictrl.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:21k
源码类别:

图形图象

开发平台:

Visual C++

  1. //*******************************************************************************
  2. // COPYRIGHT NOTES
  3. // ---------------
  4. // You may use this source code, compile or redistribute it as part of your application 
  5. // for free. You cannot redistribute it as a part of a software development 
  6. // library without the agreement of the author. If the sources are 
  7. // distributed along with the application, you should leave the original 
  8. // copyright notes in the source code without any changes.
  9. // This code can be used WITHOUT ANY WARRANTIES at your own risk.
  10. // 
  11. // For the latest updates to this code, check this site:
  12. // http://www.masmex.com 
  13. // after Sept 2000
  14. // 
  15. // Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
  16. //*******************************************************************************
  17. #ifndef __ODLISTCTRL_H__
  18. #define __ODLISTCTRL_H__
  19. #define NUM_BITMAPS 2
  20. #define MAX_TEXT MAX_PATH
  21. #include "UICont.h"
  22. #include "UIDropTarget.h"
  23. #include "UIMessages.h"
  24. #include "LocaleInfo.h"
  25. class CInPlaceEdit;
  26. class CTextProgressCtrl;
  27. //////////////////////////////////////////////////////////
  28. //CODHeaderCtrl
  29. //////////////////////////////////////////////////////////
  30. class CTRL_EXT_CLASS CODHeaderCtrl : public CHeaderCtrl
  31. {
  32. public:
  33. CODHeaderCtrl();
  34. ~CODHeaderCtrl();
  35. public:
  36. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  37. int SetSortImage(int nCol, BOOL bAsc);
  38. protected:
  39. int m_nSortCol;
  40. BOOL m_bSortAsc;
  41. };
  42. //////////////////////////////////////////////////////////////////////////
  43. // CUIODListCtrl
  44. // Extension of the MFC class that enacapsulates the windows list control
  45. // makes some things simpler some things harder and some things better.
  46. //////////////////////////////////////////////////////////////////////////
  47. class CTRL_EXT_CLASS CUIODListCtrl : public CListCtrl 
  48. {
  49. public:
  50. enum eColTypes
  51. {
  52. e_Text,
  53. e_Numeric,
  54. e_NumericFormat,
  55. e_NumericFormatComma,
  56. e_NumericFormatTime,
  57. e_Double,
  58. e_DoubleFormat,
  59. e_DoubleFormatComma,
  60. e_DoubleFormatTime,
  61. e_DateTime
  62. };
  63. DECLARE_SERIAL(CUIODListCtrl)
  64. public:
  65. CUIODListCtrl(bool bDragDrop=true);
  66. virtual ~CUIODListCtrl();  
  67. // Attributes
  68. const COleDropTarget &GetDropTarget();
  69. // Operations
  70. public:
  71. void RegisterDropTarget();
  72. virtual void SetRowFont(int nRow,CFont *pFont);
  73. virtual void SetRowBold(int nRow,BOOL bBold=TRUE);
  74. virtual void SetColFont(int nRow,int nCol,CFont *pFont);
  75. virtual void SetColBold(int nRow,int nCol,BOOL bBold=TRUE);
  76. virtual BOOL SetColumnFormat(int nCol,int fmt);
  77. virtual void Serialize(CArchive& ar);
  78.  
  79. // called from CUIListView::OnCreate
  80. virtual void ChangeStyle(UINT &dwStyle);
  81. virtual void Init();
  82. virtual void UpdateEvent(LPARAM lHint,CObject *pHint);
  83. // Initialize the list control 
  84. // The first parameter is a pointer to an array or single icon
  85. // that will be added to an image list
  86. // The second parameter will create the columns and add the heading
  87. // but must be in this format Column1|Column2 delimited by the or sign
  88. // This MUST BE CALLED first unless you use CListCtrl or API methods to add columns
  89. // then you use AddTextItem to add a row passing the returned row number every time
  90. virtual int InitListCtrl(const UINT *pIconIDs,LPCTSTR szHeadings,LPCTSTR pszProfile=NULL);
  91. virtual int InitListCtrl(UINT IconID,LPCTSTR szHeadings,LPCTSTR pszProfile=NULL);
  92. virtual int InitListCtrl(LPCTSTR szHeadings,LPCTSTR pszProfile=NULL);
  93. // used to add strings after a text row has been created
  94. virtual BOOL AddString(int nRow,int nCol,LPCTSTR szText,CUIODListCtrl::eColTypes type=CUIODListCtrl::e_Text);
  95. virtual BOOL AddString(int nRow,int nCol,int nValue,CUIODListCtrl::eColTypes type=CUIODListCtrl::e_NumericFormatComma);
  96. virtual BOOL AddString(int nRow,int nCol,double dValue,CUIODListCtrl::eColTypes type=CUIODListCtrl::e_DoubleFormatComma);
  97. virtual BOOL AddString(int nRow,int nCol,COleDateTime &dtValue,CUIODListCtrl::eColTypes type=CUIODListCtrl::e_DateTime);
  98. // Refreshes the row after a row has changed after a call to addstring
  99. virtual void UpdateString(int nRow);
  100. // add a new column will return index or -1 on failure
  101. virtual void AddExtraString(int nRow,LPCTSTR pszExtraText);
  102. // Adds a new column 
  103. virtual int AddColumn(LPCTSTR szText);
  104. // Change the the window that receives the popup command messages
  105. // default is the control
  106. void SetPopupWnd(CWnd *pPopupWnd);
  107. // Use your own popup menu
  108. void SetPopupID(UINT nPopupID);
  109. // Use your own popup menu when multiple item have been selected
  110. void SetMultiPopupID(UINT nMultiPopupID);
  111. // find a column index by text
  112. int FindColumn(LPCTSTR pszText);
  113. // same as the list control
  114. DWORD GetItemData(int nIndex) const;
  115. // add a row with data on demand see 'GetDispInfo' method
  116. int AddCallBackItem(DWORD dwData=0,int nImage=0);
  117. // add a text row where you supply the string
  118. int AddTextItem(int nImage=0);
  119. // same as list control with extra flag
  120. BOOL SetItemData(int nIndex,DWORD dwData,bool bAutoDelete=false);
  121. // Sets the item data but will also delete the pointer(so make sure it is one)
  122. // be careful with this one
  123. BOOL SetItemDataAutoDelete(int nIndex,CObject *pObj);
  124. void SetDefaultTextColor( int nRow, int nCol);
  125. void SetDefaultBkColor( int nRow, int nCol);
  126. // set the row color (only works with ownerdraw control)
  127. void SetTextColor( int nRow, int nCol, COLORREF TextColor);
  128. // set the row color (only works with ownerdraw control)
  129. void SetBkColor( int nRow, int nCol, COLORREF BkColor);
  130. // toggle between large and small icon
  131. void SetIconSize(int nImageList);
  132. // set the icon passing an ICON id from the resources
  133. int SetIcon(int nRow,UINT nIconID);
  134. // set the icon passing the image index into the internal image list 
  135. int SetIcon(int nRow,int nImage);
  136. // find an item by extension data
  137. int FindItem(DWORD dwExtData);
  138. // set the current selection
  139. int SetCurSel(int nSelect);
  140. void SetDragDrop(bool bDragDrop);
  141. void SetDropFiles(bool bDropFiles);
  142. void SetEditSubItems(bool bEdit);
  143. // toggles the column sizing permission
  144. void SetColumnSizing(bool bSet);
  145. void SetToolTips(bool bSet);
  146. BOOL SetGridLines(bool bSet);
  147. BOOL SetTrackSelect(bool bSet);
  148. BOOL SetCheckBoxes(bool bSet);
  149. BOOL SetHeaderDragDrop(bool bSet);
  150. void SetFullRowSel(bool bSet);
  151. // changes the view type between LVS_ICON, LVS_SMALLICON, LVS_REPORT, etc
  152. BOOL SetEditLabels(bool bSet);
  153. void ToggleColumnSizing();
  154. void ToggleToolTips();
  155. // toggles grid lines(IE3.0 controls only)
  156. BOOL ToggleGridLines();
  157. // toggles hot tracking lines(IE3.0 controls only)
  158. BOOL ToggleTrackSelect();
  159. // toggles check boxes (IE3.0 controls only)
  160. BOOL ToggleCheckBoxes();
  161. // toggles between moving columns by dragging the header (IE3.0 controls only)
  162. BOOL ToggleHeaderDragDrop();
  163. // toggles full row selection lines(IE3.0 controls only)
  164. void ToggleFullRowSel();
  165. // changes the view type between LVS_ICON, LVS_SMALLICON, LVS_REPORT, etc
  166. BOOL ToggleEditLabels();
  167. BOOL SetViewType(DWORD dwViewType,UINT nFlags=0);
  168. BOOL GetFullRowSel() const;
  169. DWORD GetViewType() const;
  170. // (IE3.0 controls only)
  171. // set the extended style for the new IE3.0 common controls 
  172. BOOL SetExStyle(UINT nStyle,BOOL bModify=TRUE);
  173. DWORD GetExStyle();
  174. int GetIconSize() const;
  175. // call this first to get the current or first selection
  176. // returns -1 if no selection
  177. int GetCurSel() const;
  178. // used to get multiple selection
  179. // returns -1 if no selection
  180. int GetNextSel(int item) const;
  181. // number of rows
  182. int GetCount() const;
  183. // number of columns
  184. int GetColumnCount() const;
  185. // allow the right mouse click to toggle between icons sizes
  186. void SetRCLickChangeIconSize(BOOL bSize);
  187. int HitTestEx(CPoint &point, int *col) const;
  188. CEdit* EditSubLabel( int nItem, int nCol );
  189. CTextProgressCtrl *AddProgressBar(int nItem,int nCol,int nMin,int nMax);
  190. virtual void UpdateProgressBar(int nRow,int nCol,int nPos);
  191. void DeleteProgressBar(int nItem,int nCol);
  192. // Add an icon to the image list and return the index into the list
  193. int AddIcon(UINT nIconID);
  194. int AddIcon(HICON hIcon,UINT nIconID=0);
  195. int AddIcon(LPCTSTR pszIcon);
  196. // set the column data type primarily for sorting
  197. void SetColType(int nCol,eColTypes ColType);
  198. void SetSection(LPCTSTR pszSection);
  199. void SetSortHeader();
  200. void SetSortColumn(int nCol,BOOL bAsc);
  201. // sort by column
  202. virtual void Sort();
  203. // save our profiles
  204. virtual void SaveProfile();
  205. virtual void LoadProfile();
  206. void DelayPaint(bool bDelay);
  207. static CString StripNonNumeric(LPCTSTR pszOldNum,CUIODListCtrl::eColTypes type);
  208. //////////////////
  209. // Overrides
  210. public:
  211. virtual DROPEFFECT SelectCurrentTarget(CDD_OleDropTargetInfo *pInfo);
  212. // ovwner draw
  213. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  214. // ovwner draw
  215. virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItem);
  216. virtual BOOL OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  217. protected:
  218. virtual BOOL PreTranslateMessage(MSG* pMsg);
  219. virtual void ConvertToTime(CString &str);
  220. virtual void AddThousandSeps(CString &str);
  221. virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  222. // override if you added a callback row and fill in the structure
  223. virtual PFNLVCOMPARE GetCompareFunc();
  224. virtual BOOL GetDispInfo(LV_DISPINFO *pDispInfo);
  225. virtual BOOL ColumnClick(NM_LISTVIEW* pNMListView);
  226. virtual BOOL DoubleClick(NM_LISTVIEW* pNMListView);
  227. virtual BOOL OnEnter(NM_LISTVIEW* pNMListView);
  228. virtual BOOL OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
  229. virtual BOOL OnSelChanged(int nItem, LRESULT* pResult);
  230. // return true to delete the item from the list control
  231. virtual bool DeleteKey(int nRow);
  232. // called when the user has pressed ALt-Enter
  233. virtual void ShowProperties(int nRow);
  234. // called when the user has pressed F5
  235. virtual void Refresh();
  236. // called when the user has pressed the backspace key
  237. virtual void GoBack(int nRow);
  238. // called when the user has has finshed editing a column
  239. virtual bool EndLabelEdit(int nRow,int nCol,LPCTSTR pszText);
  240. virtual void PostNcDestroy();
  241. virtual int OnToolHitTest(CPoint point,TOOLINFO *pTI) const;
  242. virtual void PreSubclassWindow();
  243. virtual int CellRectFromPoint(CPoint & point, RECT * cellrect, int * col) const;
  244. virtual void AllItemsDeleted();
  245. virtual void GetImageLists(CImageList **pILSmall,CImageList **pILLarge);
  246. virtual void CreateImageLists();
  247. // callback called when a new row is added passing the extension data and row index 
  248. // not valid for AddTextItem only AddCallbackItem
  249. virtual CUIListCtrlData *GetNewListCtrlData(DWORD dwData,int nItem);
  250. // option to show context menu if user uses keyboard or mouse(point in client co-ords)
  251. virtual void ShowPopupMenu(int nRow,int nCol,CPoint point);
  252. virtual BOOL PopupMenuItem(int nItem,int nCol,CMenu *pPopup,CPoint point);
  253. virtual BOOL ItemPrePaint(LPNMLVCUSTOMDRAW  lplvcd,LRESULT *pResult);
  254. virtual BOOL ItemPostPaint(LPNMLVCUSTOMDRAW  lplvcd,LRESULT *pResult);
  255. virtual BOOL SubItemPrePaint(LPNMLVCUSTOMDRAW lplvcd,LRESULT *pResult);
  256. virtual BOOL SubItemPostPaint(LPNMLVCUSTOMDRAW lplvcd,LRESULT *pResult);
  257. //WM_DROPFILES
  258. virtual void OnDropFile(int nRow,LPCTSTR pszFile,UINT nFlags);
  259. // OLE Drag and Drop
  260. // This called when a drop source is dropped on the tree control
  261. virtual bool DragDrop(CDD_OleDropTargetInfo *pInfo);
  262. // This called when a drop source is currently over the tree control
  263. virtual bool DragOver(CDD_OleDropTargetInfo *pInfo);
  264. // This called when the user entered the window with a drop source
  265. virtual bool DragEnter(CDD_OleDropTargetInfo *pInfo);
  266. // This called when the user leaves the window with a drop source
  267. virtual bool DragLeave(CDD_OleDropTargetInfo *pInfo);
  268. // This called when the user initiates a OLE drag and drop
  269. virtual DROPEFFECT DoDragDrop(int *npRows,COleDataSource *pOleDataSource);
  270. virtual void Empty();
  271. void SetNoItemsMess(const CString &strNoItemsMess);
  272. CString GetNoItemsMess() const;
  273. bool IsDragDrop();
  274. bool IsDropFiles();
  275. void OnRClickHeader(CPoint point,int nColIndex);
  276. // return a pointer to an extension data object
  277. CUIListCtrlData *GetListCtrlData(int nItem) const;
  278. int GetHeaderText(CHeaderCtrl *pHeader,int nPos,CString &strText);
  279. void ReplaceString(CString &rStr,LPCTSTR pszOldText,LPCTSTR pszNewText);
  280. // owner draw
  281. BOOL CalcStringEllipsis(HDC hdc, LPTSTR lpszString, int cchMax, UINT uColWidth);
  282. // owner draw
  283. void DrawItemColumn(LPDRAWITEMSTRUCT lpDrawItemStruct, int nSubItem, LPRECT prcClip);
  284. LPCTSTR GetThousandSep() const;
  285. LPCTSTR GetDecimalSep() const;
  286. LPCTSTR GetNegativeSign() const;
  287. LPCTSTR GetTimeSep() const;
  288. LPCTSTR GetDateSep() const;
  289. LPCTSTR GetSection() const;
  290. BOOL InsertItem(LPTSTR szText,LPARAM lParam,int nImage);
  291. void ChangeIconSize();
  292. int GetImageIndex(UINT nIconID);
  293. // owner draw
  294. static LPCTSTR MakeShortString(CDC* pDC, LPCTSTR lpszLong, int nColumnLen, int nOffset);
  295. void RepaintSelectedItems();
  296. void DoOleDrag(NM_LISTVIEW* pNMListView,bool bRightMenu);
  297. // for sorting
  298. protected:
  299. COLORREF m_clrBkgnd;
  300. COLORREF m_clrTextBk;
  301. COLORREF m_clrText;
  302. int m_cxClient;
  303. int m_cxStateImageOffset;
  304. int m_nImageList;
  305. BOOL m_bFullRowSel;
  306. BOOL m_bClientWidthSel;
  307. BOOL m_bColumnSizing;
  308. BOOL m_bHasFocus;
  309. BOOL m_bRClickChangeIconSize;
  310. BOOL m_bSortAscending;
  311. BOOL m_bToolTips;
  312. CUIObjList m_objList;
  313. int m_nColClicked;
  314. int m_nSortColumn;
  315. int m_nImage;
  316. int m_nItems;
  317. int m_nSubItems;
  318. int m_cxSmallIcon;
  319. int m_cySmallIcon;
  320. int m_cxLargeIcon;
  321. int m_cyLargeIcon;
  322. int *m_pColWidths;
  323. int *m_pColOrder;
  324. int *m_pColTypes;
  325. DWORD m_dwExStyle;
  326. DWORD m_dwViewType;
  327. CImageList m_ImageSmall;
  328. CImageList m_ImageLarge;
  329. CString m_strHeadings;
  330. CPoint m_PopupPoint;
  331. HFONT m_hOrigFont;
  332. CString m_strSection;
  333. CMap<UINT,UINT,int,int> m_mapImageIndex;
  334. CMap<CString,LPCTSTR,int,int> m_mapImageFile;
  335. CODHeaderCtrl m_HeaderCtrl;
  336. afx_msg LRESULT OnGetItemText(WPARAM wParam, LPARAM lParam);
  337. afx_msg LRESULT OnSetImageList(WPARAM wParam, LPARAM lParam);
  338. afx_msg LRESULT OnSetTextColor(WPARAM wParam, LPARAM lParam);
  339. afx_msg LRESULT OnSetTextBkColor(WPARAM wParam, LPARAM lParam);
  340. afx_msg LRESULT OnSetBkColor(WPARAM wParam, LPARAM lParam);
  341. ///* * Generated message map functions
  342. //{{AFX_MSG(CUIODListCtrl)
  343. afx_msg LRESULT OnSetColumnWidth(WPARAM wParam,LPARAM lParam);
  344. afx_msg LRESULT OnDeleteAllItems(WPARAM wParam,LPARAM lParam);
  345. afx_msg LRESULT OnDeleteItem(WPARAM wParam,LPARAM lParam);
  346. afx_msg LRESULT OnDeleteColumn(WPARAM wParam,LPARAM lParam);
  347. afx_msg LRESULT OnUpdateHeaderWidth(WPARAM wParam,LPARAM lParam);
  348. afx_msg void OnInitMenuPopup(CMenu* pPopupMenu,UINT nIndex,BOOL bSysMenu);
  349. afx_msg void OnContextMenu(CWnd*,CPoint point);
  350. afx_msg void OnSize(UINT nType, int cx, int cy);
  351. afx_msg void OnPaint();
  352. afx_msg void OnSetFocus(CWnd* pOldWnd);
  353. afx_msg void OnKillFocus(CWnd* pNewWnd);
  354. afx_msg void OnViewLargeIcons();
  355. afx_msg void OnViewSmallIcons();
  356. afx_msg void OnViewDetails();
  357. afx_msg void OnViewList();
  358. afx_msg void OnViewFullRowSelection();
  359. afx_msg void OnViewColumnOrdering();
  360. afx_msg void OnViewColumnSizing();
  361. afx_msg void OnViewGridlines();
  362. afx_msg void OnViewCheckboxes();
  363. afx_msg void OnViewTrackSelect();
  364. afx_msg void OnViewEditColumn();
  365. afx_msg void OnHeaderRemoveColumn();
  366. afx_msg void OnHeaderEditText();
  367. afx_msg void OnHeaderReset();
  368. afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  369. afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  370. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  371. afx_msg BOOL OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult);
  372. afx_msg BOOL OnBeginRDrag(NMHDR* pNMHDR, LRESULT* pResult);
  373. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  374. afx_msg void OnDestroy();
  375. afx_msg BOOL OnToolTipText(UINT id,NMHDR *pNMHDR,LRESULT *pResult);
  376. afx_msg void OnDropFiles(HDROP hDropInfo);
  377. afx_msg LRESULT OnAppPropertiesKey(WPARAM wParam, LPARAM lParam );
  378. afx_msg LRESULT OnAppDeleteKey(WPARAM wParam, LPARAM lParam );
  379. afx_msg LRESULT OnAppRefreshKey(WPARAM wParam, LPARAM lParam );
  380. afx_msg LRESULT OnAppBackspaceKey(WPARAM wParam, LPARAM lParam );
  381. afx_msg LRESULT OnAppContextMenuKey(WPARAM wParam, LPARAM lParam );
  382. afx_msg LRESULT OnAppEditKey(WPARAM wParam, LPARAM lParam );
  383. //}}AFX_MSG
  384. afx_msg LRESULT OnDragDrop(WPARAM wParam,LPARAM lParam);
  385. afx_msg LRESULT OnDragOver(WPARAM wParam,LPARAM lParam);
  386. afx_msg LRESULT OnDragEnter(WPARAM wParam,LPARAM lParam);
  387. afx_msg LRESULT OnDragLeave(WPARAM wParam,LPARAM lParam);
  388. afx_msg LRESULT OnDDDoDragDrop(WPARAM wParam,LPARAM lParam);
  389. DECLARE_MESSAGE_MAP()
  390. private:
  391. static LPCTSTR szEntryHeadings;
  392. static LPCTSTR szEntryStyle;
  393. static LPCTSTR szEntryRowSel;
  394. static LPCTSTR szEntryViewType;
  395. static LPCTSTR szEntryColumnSizing;
  396. static LPCTSTR szEntrySortColumn;
  397. static LPCTSTR szEntrySubItems;
  398. static LPCTSTR szEntryColOrder;
  399. static LPCTSTR szEntryColWidths;
  400. CListDropTarget m_OleDropTarget;
  401. COleDataSource m_OleDataSource;
  402. CString m_sToolTipText;
  403. CString m_strNoItemsMess;
  404. bool m_bDelayPaint;
  405. int m_iItemDrop;
  406. bool m_bDragDrop;
  407. bool m_bDropFiles;
  408. bool m_bEditSubItems;
  409. CWnd *m_pPopupWnd;
  410. protected:
  411. virtual void SelChanged( int nItem , LRESULT *pResult);
  412. UINT m_PopupID;
  413. UINT m_MultiPopupID;
  414. };
  415. /////////////////////
  416. // inlines
  417. /////////////////////
  418. inline void CUIODListCtrl::SetEditSubItems(bool bEdit)
  419. {
  420. m_bEditSubItems = bEdit;
  421. }
  422. inline void CUIODListCtrl::SetNoItemsMess(const CString &strNoItemsMess)
  423. {
  424. m_strNoItemsMess = strNoItemsMess;
  425. }
  426. inline CString CUIODListCtrl::GetNoItemsMess() const
  427. {
  428. return m_strNoItemsMess;
  429. }
  430. inline void CUIODListCtrl::SetPopupWnd(CWnd *pPopupWnd)
  431. {
  432. m_pPopupWnd = pPopupWnd;
  433. }
  434. inline void CUIODListCtrl::SetPopupID(UINT nPopupID)
  435. {
  436. m_PopupID = nPopupID;
  437. }
  438. inline void CUIODListCtrl::SetMultiPopupID(UINT nMultiPopupID)
  439. {
  440. m_MultiPopupID = nMultiPopupID;
  441. }
  442. inline bool CUIODListCtrl::IsDragDrop()
  443. {
  444. return m_bDragDrop;
  445. }
  446. inline bool CUIODListCtrl::IsDropFiles()
  447. {
  448. return m_bDropFiles;
  449. }
  450. inline void CUIODListCtrl::SetDragDrop(bool bDragDrop)
  451. {
  452. m_bDragDrop = bDragDrop;
  453. }
  454. inline void CUIODListCtrl::SetDropFiles(bool bDropFiles)
  455. {
  456. m_bDropFiles = bDropFiles;
  457. }
  458. inline const COleDropTarget &CUIODListCtrl::GetDropTarget()
  459. {
  460. return m_OleDropTarget;
  461. }
  462. inline int CUIODListCtrl::GetIconSize() const
  463. {
  464. return m_nImageList;
  465. }
  466. inline int CUIODListCtrl::GetCurSel() const
  467. {
  468. return GetNextItem(-1,LVNI_SELECTED);
  469. }
  470. inline int CUIODListCtrl::GetNextSel(int item) const
  471. {
  472. return GetNextItem(item,LVNI_SELECTED);
  473. }
  474. inline int CUIODListCtrl::GetCount() const
  475. {
  476. return GetItemCount();
  477. }
  478. inline void CUIODListCtrl::SetRCLickChangeIconSize(BOOL bSize)
  479. {
  480. m_bRClickChangeIconSize = bSize;
  481. }
  482. inline void CUIODListCtrl::SetColumnSizing(bool bSet)
  483. {
  484. m_bColumnSizing = !bSet;
  485. SaveProfile();
  486. }
  487. inline void CUIODListCtrl::ToggleColumnSizing()
  488. {
  489. m_bColumnSizing = !m_bColumnSizing;
  490. SaveProfile();
  491. }
  492. inline void CUIODListCtrl::ToggleFullRowSel()
  493. {
  494. SetFullRowSel(!m_bFullRowSel);
  495. }
  496. inline BOOL CUIODListCtrl::ToggleHeaderDragDrop()
  497. {
  498. return SetHeaderDragDrop(!(GetExStyle() & LVS_EX_HEADERDRAGDROP));
  499. }
  500. inline BOOL CUIODListCtrl::SetHeaderDragDrop(bool bSet)
  501. {
  502. return SetExStyle(LVS_EX_HEADERDRAGDROP,bSet);
  503. }
  504. inline BOOL CUIODListCtrl::ToggleGridLines()
  505. {
  506. return SetGridLines(!(GetExStyle() & LVS_EX_GRIDLINES));
  507. }
  508. inline BOOL CUIODListCtrl::SetGridLines(bool bSet)
  509. {
  510. return SetExStyle(LVS_EX_GRIDLINES,bSet);
  511. }
  512. inline BOOL CUIODListCtrl::ToggleTrackSelect()
  513. {
  514. return SetTrackSelect(!(GetExStyle() & LVS_EX_TRACKSELECT));
  515. }
  516. inline BOOL CUIODListCtrl::SetTrackSelect(bool bSet)
  517. {
  518. return SetExStyle(LVS_EX_TRACKSELECT,bSet);
  519. }
  520. inline BOOL CUIODListCtrl::ToggleCheckBoxes()
  521. {
  522. return SetCheckBoxes(!(GetExStyle() & LVS_EX_CHECKBOXES)); 
  523. }
  524. inline BOOL CUIODListCtrl::SetCheckBoxes(bool bSet)
  525. {
  526. return SetExStyle(LVS_EX_CHECKBOXES,bSet);
  527. }
  528. inline BOOL CUIODListCtrl::ToggleEditLabels()
  529. {
  530. return SetEditLabels(!(GetStyle() & LVS_EDITLABELS));
  531. }
  532. inline BOOL CUIODListCtrl::SetEditLabels(bool bSet)
  533. {
  534. return bSet ? ModifyStyle(0,LVS_EDITLABELS) : ModifyStyle(LVS_EDITLABELS,0);
  535. }
  536. inline void CUIODListCtrl::ToggleToolTips()
  537. {
  538. m_bToolTips = !m_bToolTips;
  539. SetToolTips(m_bToolTips == TRUE);
  540. }
  541. inline void CUIODListCtrl::SetToolTips(bool bSet)
  542. {
  543. m_bToolTips = bSet;
  544. EnableToolTips(m_bToolTips);
  545. }
  546. inline void CUIODListCtrl::SetColType(int nCol,eColTypes ColType)
  547. {
  548. ASSERT(nCol < m_nSubItems);
  549. ASSERT(m_pColTypes);
  550. m_pColTypes[nCol] = ColType;
  551. }
  552. inline int CUIODListCtrl::GetColumnCount() const
  553. {
  554. return m_nSubItems;
  555. }
  556. inline LPCTSTR CUIODListCtrl::GetDecimalSep() const
  557. {
  558. return CLocaleInfo::Instance()->GetDecimalSep();
  559. }
  560. inline LPCTSTR CUIODListCtrl::GetThousandSep() const
  561. {
  562. return CLocaleInfo::Instance()->GetThousandSep();
  563. }
  564. inline LPCTSTR CUIODListCtrl::GetNegativeSign() const
  565. {
  566. return CLocaleInfo::Instance()->GetNegativeSign();
  567. }
  568. inline LPCTSTR CUIODListCtrl::GetTimeSep() const
  569. {
  570. return CLocaleInfo::Instance()->GetTimeSep();
  571. }
  572. inline LPCTSTR CUIODListCtrl::GetDateSep() const
  573. {
  574. return CLocaleInfo::Instance()->GetDateSep();
  575. }
  576. inline void CUIODListCtrl::DelayPaint(bool bDelay)
  577. {
  578. m_bDelayPaint = bDelay;
  579. }
  580. ////////////////////////////////////////////////
  581. // CChangeViewType
  582. ////////////////////////////////////////////////
  583. class CChangeViewType
  584. {
  585. public:
  586. CChangeViewType(CUIODListCtrl *pLC,DWORD dwType);
  587. virtual ~CChangeViewType();
  588. public:
  589. protected:
  590. private:
  591. CUIODListCtrl *m_pLC;
  592. DWORD m_dwType;
  593. };
  594. #endif