解决方案 »

  1.   

    LVIS_STATEIMAGEMASK = &HF000
        LVIS_CHECKED = &H2000&
        LVIS_UNCHECKED = &H1000&
    Public Property Let ItemChecked(ByVal index As Long, ByVal bChecked As Boolean)
        Dim lpPitem As LVITEM
        lpPitem.stateMask = LVIS_STATEIMAGEMASK
        lpPitem.State = IIf(bChecked, LVIS_CHECKED, LVIS_UNCHECKED)
        SendMessage hwndLV, LVM_SETITEMSTATE, index, lpPitem
    End PropertyPublic Property Get ItemChecked(ByVal index As Long) As Boolean
        Dim lret As Long
        lret = SendLongMessage(hwndLV, LVM_GETITEMSTATE, index, ByVal LVIS_STATEIMAGEMASK)
        ItemChecked = (lret = LVIS_CHECKED)
    End Property
      

  2.   

    请问,有没有搜索的办法?就像LVM_GETNEXTITEM消息,能自动找到下一个选中的项。
    毕竟用VB代码调用API再一个个读取状态属性,然后对比,
    这样效率实在是低,肯定没有系统自动搜寻来的高效。
      

  3.   

    对于Selected好像可以用这种方法,但似乎不适用于CheckedPublic Function GetNextSelectedItem(Optional ByVal index As Long = -1) As Long
        GetNextSelectedItem = SendLongMessage(hwndLV, LVM_GETNEXTITEM, index, LVIS_SELECTED) 'LVIS_SELECTED)
    End Function
    呵呵,等高手来吧