EditListCtrl.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /************************************************************************/
  2. /* Copyright (C), 2016-2020, [IT], 保留所有权利;
  3. /* 模 块 名:;
  4. /* 描 述:;
  5. /*
  6. /* 版 本:[V];
  7. /* 作 者:[IT];
  8. /* 日 期:[11/11/2016];
  9. /*
  10. /*
  11. /* 注 意:;
  12. /*
  13. /* 修改记录:[IT];
  14. /* 修改日期:;
  15. /* 修改版本:;
  16. /* 修改内容:;
  17. /************************************************************************/
  18. #ifndef __EDIT_LIST_CTRL__
  19. #define __EDIT_LIST_CTRL__
  20. #pragma once
  21. #define WM_USER_EDIT_END WM_USER+1002
  22. #include "SortHeaderCtrl.h"
  23. // 声明回调函数;
  24. typedef void(CALLBACK *EditResult)(IN INT nItem, IN INT nSubItem, IN CString strText);
  25. class CListCtrlEdit : public CEdit
  26. {
  27. DECLARE_DYNAMIC(CListCtrlEdit)
  28. public:
  29. CListCtrlEdit();
  30. virtual ~CListCtrlEdit();
  31. public:
  32. void SetCtrlData(DWORD dwData);
  33. DWORD GetCtrlData();
  34. void SetInput(const DWORD dwRight);
  35. void SetOthers(const char* pOthers, const int nSize);
  36. public:
  37. virtual BOOL PreTranslateMessage(MSG* pMsg);
  38. protected:
  39. afx_msg void OnKillFocus(CWnd* pNewWnd);
  40. afx_msg void OnSetFocus(CWnd* pOldWnd);
  41. DECLARE_MESSAGE_MAP()
  42. private:
  43. DWORD m_dwData;
  44. BOOL m_bExchange;
  45. };
  46. class CEditListCtrl : public CListCtrl
  47. {
  48. CSortHeaderCtrl m_Ctrlheader;
  49. public:
  50. CEditListCtrl();
  51. BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
  52. CString GetItemText(int nItem, int nSubItem);
  53. // 设置list列信息;
  54. BOOL SetHeadings(IN LPCTSTR pszText, ...);
  55. public:
  56. virtual BOOL PreTranslateMessage(MSG* pMsg);
  57. protected:
  58. virtual void PreSubclassWindow();
  59. public:
  60. vector<int> m_vtEditColumn;
  61. void SetEditColumn(IN vector<int> &vtEditColumn)
  62. {
  63. m_vtEditColumn.clear();
  64. m_vtEditColumn.insert(m_vtEditColumn.begin(),vtEditColumn.begin(), vtEditColumn.end());
  65. }
  66. INT m_mode;
  67. // 列数;
  68. INT m_nNumColumns;
  69. // 回调函数指针;
  70. EditResult m_pCallBackEditResult;
  71. void SetCallbackEditResult(IN LPVOID lpCallBack)
  72. {
  73. if ( lpCallBack )
  74. m_pCallBackEditResult = (EditResult)lpCallBack;
  75. }
  76. void InitStyle();
  77. virtual ~CEditListCtrl();
  78. protected:
  79. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  80. afx_msg void OnParentNotify(UINT message, LPARAM lParam);
  81. afx_msg void OnCustomdrawList(NMHDR*, LRESULT*);
  82. afx_msg LRESULT OnEditEnd(WPARAM, LPARAM lParam = FALSE);
  83. DECLARE_MESSAGE_MAP()
  84. private:
  85. CListCtrlEdit m_edit;
  86. void ShowEdit(BOOL bShow, int nItem, int nIndex, CRect rc = CRect(0, 0, 0, 0));
  87. int m_nItem;
  88. int m_nSub;
  89. BOOL Key_Shift(int& nItem, int& nSub);
  90. BOOL Key_Ctrl(int& nItem, int &nSub);
  91. };
  92. #endif // __EDIT_LIST_CTRL__;