简单ListCtrl

    技术2022-05-20  28

    InitCommonControls();

    InitContextMenuManager();

    InitShellManager();

     

    CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));

    CMFCButton::EnableWindowsTheming();

     

    class CMyListCtrl : public CMFCListCtrl

    {

    virtual COLORREF OnGetCellTextColor(int nRow, int nColum);

    virtual COLORREF OnGetCellBkColor(int nRow, int nColum);

    virtual HFONT OnGetCellFont(int nRow, int nColum, DWORD dwData = 0);

     

    virtual int OnCompareItems(LPARAM lParam1, LPARAM lParam2, int iColumn);

     

    public:

    BOOL m_bColor;

    BOOL m_bModifyFont;

    };

     

     

    COLORREF CMyListCtrl::OnGetCellTextColor(int nRow, int nColum)

    {

    if (!m_bColor)

    {

    return CMFCListCtrl::OnGetCellTextColor(nRow, nColum);

    }

     

    return(nRow % 2) == 0 ? RGB(128, 37, 0) : RGB(0, 0, 0);

    }

     

    COLORREF CMyListCtrl::OnGetCellBkColor(int nRow, int nColum)

    {

    if (!m_bColor)

    {

    return CMFCListCtrl::OnGetCellBkColor(nRow, nColum);

    }

     

    if (m_bMarkSortedColumn && nColum == m_iSortedColumn)

    {

    return(nRow % 2) == 0 ? RGB(233, 221, 229) : RGB(176, 218, 234);

    }

     

    return(nRow % 2) == 0 ? RGB(253, 241, 249) : RGB(196, 238, 254);

    }

     

    HFONT CMyListCtrl::OnGetCellFont(int nRow, int nColum, DWORD /*dwData* = 0*/)

    {

    if (!m_bModifyFont)

    {

    return NULL;

    }

     

    if (nColum == 2 &&(nRow >= 4 && nRow <= 8))

    {

    return afxGlobalData.fontDefaultGUIBold;

    }

     

    return NULL;

    }

     

    int CMyListCtrl::OnCompareItems(LPARAM lParam1, LPARAM lParam2, int iColumn)

    {

    CString strItem1 = GetItemText((int)(lParam1 < lParam2 ? lParam1 : lParam2), iColumn);

    CString strItem2 = GetItemText((int)(lParam1 < lParam2 ? lParam2 : lParam1), iColumn);

     

    if (iColumn == 0)

    {

    int nItem1 = _ttoi(strItem1);

    int nItem2 = _ttoi(strItem2);

    return(nItem1 < nItem2 ? -1 : 1);

    }

    else

    {

    int iSort = _tcsicmp(strItem1, strItem2);

    return(iSort);

    }

    }

     

     

     

     

    m_wndList.m_bColor = TRUE;

    m_wndList.m_bModifyFont = TRUE;

     

    m_wndList.SetRedraw(FALSE);

    m_wndList.InsertColumn(0, _T("#"), LVCFMT_LEFT, 20);

    m_wndList.InsertItem(i, str);

    m_wndList.SetItemData(i, i);

    m_wndList.SetItemText(i, nColumn, str);

    m_wndList.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

    m_wndList.EnableMarkSortedColumn();

    m_wndList.SetRedraw(TRUE);

    m_wndList.Invalidate();

    m_wndList.UpdateWindow();

     

    CString str = m_wndList.GetItemText(pNMItemActivate->iItem, 0);

    str = m_wndList.GetItemText(pNMItemActivate->iItem, 1);

    str = m_wndList.GetItemText(pNMItemActivate->iItem, 2);

    CString str = m_wndList.GetItemText(m_wndList.GetNextItem(-1,LVNI_SELECTED),0);

     

     

    char   sBuf[255]; 

    LVCOLUMN   cl; 

    cl.mask   =   LVCF_TEXT; 

    cl.pszText   =   sBuf; 

    cl.cchTextMax   =   255; 

    m_wndList.GetColumn(phdr->iItem, &cl);

     

    CString s = cl.pszText;


    最新回复(0)