检索 CListCtrl 中的选定行

Retrieving the selected row in a CListCtrl

我有一个 CListCtrl,其中有 2 列和多行。我想获取所选行的索引。当用户点击第一列时,我能够获取该行,但当点击第二列时,我无法获取该行。

有什么建议吗?

创建控件后调用m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);——通常在OnInitDialog.

比方说,我们有一个对话框,其中包含一个在 RC 文件中定义的 CListCtrl 对象,如下所示:

IDD_DIALOG DIALOGEX 0, 0, 435, 273
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "A Dialog :)"
FONT 12, "Microsoft Sans Serif", 400, 0, 0xEE
BEGIN
    CONTROL         "",IDC_LIST_CONTROL,"SysListView32",LVS_REPORT | LVS_OWNERDRAWFIXED | LVS_ALIGNLEFT | WS_BORDER,5,138,350,86
END

然后 CListCtrl 对象 IDC_LIST_CONTROL 表现为 LVS_REPORT,这意味着 单击它的任何列都会选择整行。

然后像这样检索选定的行:

int selectedRow = ((CListCtrl*)GetDlgItem(IDC_LIST_CONTROL))->GetSelectionMark();