/************************************************************************/ /* Copyright (C), 2016-2020, [IT], 保留所有权利; /* 模 块 名:; /* 描 述:; /* /* 版 本:[V]; /* 作 者:[IT]; /* 日 期:[11/11/2016]; /* /* /* 注 意:; /* /* 修改记录:[IT]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /************************************************************************/ #ifndef __EDIT_LIST_CTRL__ #define __EDIT_LIST_CTRL__ #pragma once #define WM_USER_EDIT_END WM_USER+1002 #include "SortHeaderCtrl.h" // 声明回调函数; typedef void(CALLBACK *EditResult)(IN INT nItem, IN INT nSubItem, IN CString strText); class CListCtrlEdit : public CEdit { DECLARE_DYNAMIC(CListCtrlEdit) public: CListCtrlEdit(); virtual ~CListCtrlEdit(); public: void SetCtrlData(DWORD dwData); DWORD GetCtrlData(); void SetInput(const DWORD dwRight); void SetOthers(const char* pOthers, const int nSize); public: virtual BOOL PreTranslateMessage(MSG* pMsg); protected: afx_msg void OnKillFocus(CWnd* pNewWnd); afx_msg void OnSetFocus(CWnd* pOldWnd); DECLARE_MESSAGE_MAP() private: DWORD m_dwData; BOOL m_bExchange; }; class CEditListCtrl : public CListCtrl { CSortHeaderCtrl m_Ctrlheader; public: CEditListCtrl(); BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText); CString GetItemText(int nItem, int nSubItem); // 设置list列信息; BOOL SetHeadings(IN LPCTSTR pszText, ...); public: virtual BOOL PreTranslateMessage(MSG* pMsg); protected: virtual void PreSubclassWindow(); public: vector m_vtEditColumn; void SetEditColumn(IN vector &vtEditColumn) { m_vtEditColumn.clear(); m_vtEditColumn.insert(m_vtEditColumn.begin(),vtEditColumn.begin(), vtEditColumn.end()); } INT m_mode; // 列数; INT m_nNumColumns; // 回调函数指针; EditResult m_pCallBackEditResult; void SetCallbackEditResult(IN LPVOID lpCallBack) { if ( lpCallBack ) m_pCallBackEditResult = (EditResult)lpCallBack; } void InitStyle(); virtual ~CEditListCtrl(); protected: afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnParentNotify(UINT message, LPARAM lParam); afx_msg void OnCustomdrawList(NMHDR*, LRESULT*); afx_msg LRESULT OnEditEnd(WPARAM, LPARAM lParam = FALSE); DECLARE_MESSAGE_MAP() private: CListCtrlEdit m_edit; void ShowEdit(BOOL bShow, int nItem, int nIndex, CRect rc = CRect(0, 0, 0, 0)); int m_nItem; int m_nSub; BOOL Key_Shift(int& nItem, int& nSub); BOOL Key_Ctrl(int& nItem, int &nSub); }; #endif // __EDIT_LIST_CTRL__;