获取列标题为列(CListCtrl)mfc c ++的索引

时间:2015-05-29 09:56:44

标签: c++ mfc

每次使用IsertColumn函数时,它都会返回一个int变量。该变量是列的索引。 如果我们有很多列,有没有办法获得具有给定名称的列的索引(该列的标题文本)。 谢谢

2 个答案:

答案 0 :(得分:1)

CListCtrl :: GetHeaderCtrl :: GetItem(int iPos,HDITEM * pHeaderItem); < / p>

HDITEM :: pszText就是你想要的 - 如果我正确地得到了你的问题......

答案 1 :(得分:1)

根据您的要求,类似的内容应该有效......

此示例派生一个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"));

其中&#34;价值&#34;是标题中实际列的文本。