⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mycombolistctrl.h

📁 一个非常好的WINCE界面
💻 H
字号:
//MyComboListCtrl.h
#if !defined(AFX_MYCOMBOLISTCTRL_H__9089600F_374F_4BFC_9482_DEAC0E7133E8__INCLUDED_)
#define AFX_MYCOMBOLISTCTRL_H__9089600F_374F_4BFC_9482_DEAC0E7133E8__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//the max listCtrl columns
#define MAX_LISTCTRL_COLUMNS 100

#include <afxtempl.h>
#include <afxcmn.h>

class CInPlaceCombo;
class CInPlaceEdit;

// User define message 
// This message is posted to the parent
// The message can be handled to make the necessary validations, if any
#define WM_VALIDATE  WM_USER + 0x7FFD

// User define message 
// This message is posted to the parent
// The message should be handled to spcify the items to the added to the combo
#define WM_SET_ITEMS WM_USER + 0x7FFC

class CMyComboListCtrl : public CListCtrl
{
public:
    // Implementation
    typedef enum {MODE_READONLY,MODE_DIGITAL_EDIT,MODE_TEXT_EDIT,MODE_COMBO} COMBOLISTCTRL_COLUMN_MODE;

    // Constructor
    CMyComboListCtrl();

    // Destructor
    virtual ~CMyComboListCtrl();

    // Sets/Resets the column which support the in place combo box
    void SetComboColumns(int iColumnIndex, bool bSet = true);

    // Sets/Resets the column which support the in place edit control
    void SetReadOnlyColumns(int iColumnIndex, bool bSet = true);

    // Sets the valid characters for the edit ctrl
    void SetValidEditCtrlCharacters(CString& rstrValidCharacters);

    // Sets the vertical scroll
    void EnableVScroll(bool bEnable = true);

    // Sets the horizontal scroll
    void EnableHScroll(bool bEnable = true);

    //insert column
    int CMyComboListCtrl::InsertColumn(int nCol,LPCTSTR lpszColumnHeading,int nFormat = LVCFMT_LEFT,int nWidth = -1,int nSubItem = -1);

    //Get column counts
    int GetColumnCounts();

    //delete all column
    void DeleteAllColumn();

    //set column Valid char string
    void SetColumnValidEditCtrlCharacters(CString &rstrValidCharacters,int column = -1);

    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMyComboListCtrl)
    //}}AFX_VIRTUAL

protected:
    // Methods
    // Generated message map functions
    //{{AFX_MSG(CMyComboListCtrl)
    afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
    afx_msg void OnBeginLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
    //}}AFX_MSG

    DECLARE_MESSAGE_MAP()

private:
    // Implementation

    // Returns the row & column index of the column on which mouse click event has occured
    bool HitTestEx(CPoint& rHitPoint, int* pRowIndex, int* pColumnIndex) const;

    // Creates and displays the in place combo box
    CInPlaceCombo* ShowInPlaceList(int iRowIndex, int iColumnIndex, CStringList& rComboItemsList, 
        CString strCurSelecetion = (CString)"", int iSel = -1);

    // Creates and displays the in place edit control
    CInPlaceEdit* ShowInPlaceEdit(int iRowIndex, int iColumnIndex, CString& rstrCurSelection);

    // Calculates the cell rect
    void CalculateCellRect(int iColumnIndex, int iRowIndex, CRect& robCellRect);

    // Checks whether column supports in place combo box
    bool IsCombo(int iColumnIndex);

    // Checks whether column is read only
    bool IsReadOnly(int iColumnIndex);

    // Scrolls the list ctrl to bring the in place ctrl to the view
    void ScrollToView(int iColumnIndex, /*int iOffSet, */CRect& obCellRect);

    // Attributes

    // List of columns that support the in place combo box
    CList<int, int> m_ComboSupportColumnsList;

    // List of columns that are read only
    CList<int, int> m_ReadOnlyColumnsList;

    // Valid characters
    CString m_strValidEditCtrlChars;

    // The window style of the in place edit ctrl
    DWORD m_dwEditCtrlStyle;

    // The window style of the in place combo ctrl
    DWORD m_dwDropDownCtrlStyle;

    //columnCounts
    int m_iColumnCounts;

    //column types
    COMBOLISTCTRL_COLUMN_MODE m_modeColumn[MAX_LISTCTRL_COLUMNS];

    //column 
    CString m_strValidChars[MAX_LISTCTRL_COLUMNS];
    //int m_
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MYCOMBOLISTCTRL_H__9089600F_374F_4BFC_9482_DEAC0E7133E8__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -