gpt4 book ai didi

c++ - CListCtrl 根据选定的行值执行操作

转载 作者:行者123 更新时间:2023-11-28 05:03:05 25 4
gpt4 key购买 nike

我必须根据 CListViewCtrl 中的值启用/禁用对话框上的按钮。基于所选行。我做到了这一点:

NOTIFY_HANDLER(IDC_LIST, LVN_ITEMCHANGED, OnMyListChange)

// ....

LRESULT OnMyListChange(int, LPNMHDR pNMHDR, BOOL&)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if ((pNMListView->uChanged & LVIF_STATE)
&& (pNMListView->uNewState & LVIS_SELECTED))
{
// enable/disable buttons based on row field value
}
return 0;
}

假设我有 column1 column2 column3。我需要根据所选行中的 column2 值编写一个条件。多行选择不是这种情况。谢谢。

最佳答案

有一个方法GetItemText .注意它指的是:

nItemThe index of the item whose text is to be retrieved.

nSubItemSpecifies the subitem whose text is to be retrieved.

将它们视为。现在,看看 NM_LISTVIEW处理程序中的结构:

typedef struct tagNMLISTVIEW {
NMHDR  hdr;
int    iItem;
int    iSubItem;
UINT   uNewState;
UINT   uOldState;
UINT   uChanged;
POINT  ptAction;
LPARAM lParam;
} NMLISTVIEW, *LPNMLISTVIEW;

它也有那些属性:

int    iItem;
int    iSubItem;

因此您应该能够获取项目文本并执行您想要执行的操作。示例:

// Get text in column 2 (it might 1 - can't remember if it is zero based indexing)
CString strValue = m_myList.GetItemText(pNMListView->iItem, 2);
if(strValue == "DoThis")
{
// ...
}

以上代码测试!!

关于c++ - CListCtrl 根据选定的行值执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45463100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com