获取具有 header 列 (CListCtrl) 的列的索引 mfc c++

Get index of a column with the header of column (CListCtrl) mfc c++

每次我使用 IsertColumn 函数时,它都会 return 一个 int 变量。该变量是列的索引。 如果我们有很多列,是否有任何方法可以获取具有给定名称的列的索引(该列的 header 文本)。 谢谢

CListCtrl::GetHeaderCtrl::GetItem(int iPos, HDITEM* pHeaderItem);

HDITEM::pszText 是您想要的 - 如果我答对了您的问题...

根据您的要求,与此类似的东西应该可以工作....

此示例派生了一个要在对话框中使用的 CListCtrl。

int MyListCtrl::FindColumn(const CString& ColumnText)
    {
    int index = -1;
    CHeaderCtrl* pHeader = GetHeaderCtrl();
    if (pHeader)
        {
        int NumberOfColumns = pHeader->GetItemCount();
        for (int i = 0; i < NumberOfColumns; ++i)
            {
            HDITEM Item;
            TCHAR buffer[256] = { 0 };
            Item.mask = HDI_TEXT;
            Item.pszText = buffer;
            Item.cchTextMax = 256;
            pHeader->GetItem(i, &Item);
            if (Item.pszText == ColumnText)
                {
                index = i;
                break;
                }
            }
        }
    return index;
    }

调用函数:

int index = m_llistctrl.FindColumn(_T("Value"));

其中 "Value" 是 header 中实际列的文本。