【问题标题】:How to set an item in CListCtrl as selected?如何将 CListCtrl 中的项目设置为选中?
【发布时间】:2009-11-13 13:42:19
【问题描述】:

ClistCtrl 在报表视图中设置为单选和单列,没有标题。

我尝试过SetItemState(0,LVIS_SELECTED,LVIF_STATE)
SetSelectionMark(int index),但这些都不起作用。

【问题讨论】:

    标签: c++ winapi selection clistctrl


    【解决方案1】:

    您还需要在更新项目状态后调用 SetSelectionMark。

    SetItemState(prev_item, ~LVIS_SELECTED, LVIS_SELECTED);
    SetItemState(new_selected_item, LVIS_SELECTED, LVIS_SELECTED);
    SetSelectionMark(new_selected_item);
    

    【讨论】:

      【解决方案2】:

      使用 SetItemState(0, LVIS_SELECTED, LVIS_SELECTED) 突出显示,以及 SetItemState(0, ~LVIS_SELECTED, LVIS_SELECTED) 取消突出显示。

      【讨论】:

        【解决方案3】:

        只需将 Properties->Appearance->Always Show Selection 设置为 TRUE

        【讨论】:

        • 这为我解决了这个问题,虽然不是通过 GUI。如果您以编程方式创建列表视图控件,则要设置的样式为LVS_SHOWSELALWAYS
        【解决方案4】:

        我认为SetItemState 函数有一个未记录的功能,您可以将-1 作为其nItem 参数传递,以使函数作用于所有项目。

        所以,如果你只想选择只有一个,我可以建议:

            SetItemState(-1, 0, LVIS_SELECTED);
            SetItemState(index, LVIS_SELECTED, LVIS_SELECTED);
        

        更新:

        (看到http://www.verycomputer.com/417_11fcb075491b88c9_1.htm#p3之后)

        SetItemState 函数发送 LVM_SETITEMSTATE 消息,并且 nItem=-1 功能记录在 message's reference documentation 作为其 wParam 参数。

        【讨论】:

        • 谢谢,macro 中还有更多信息。
        【解决方案5】:

        假设要选择的item的索引是w_nCurIdx,使用如下代码

        m_pSPSMapList.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
        m_pSPSMapList.SetItemState(w_nCurIdx, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
        

        【讨论】:

          【解决方案6】:

          如果您不会在 OnInitialDialog 中设置所选项目,请使用以下代码:

          m_pSPSMapList->EnsureVisible(nItem, FALSE);
          m_pSPSMapList->SetFocus();
          m_pSPSMapList->SetItemState(nItem, LVIS_FOCUSED | LVIS_SELECTED, 
                                             LVIS_FOCUSED | LVIS_SELECTED);
          
          return FALSE; // OnInitialDialog necessarily must return false
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-21
            • 1970-01-01
            • 1970-01-01
            • 2019-09-04
            相关资源
            最近更新 更多