在网上搜索了老半天也没有结果。
求示例代码

解决方案 »

  1.   

    ListView Messages (LVM_)
    Public Const LVM_GETISEARCHSTRINGA = (LVM_FIRST + 52)
    Public Const LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGAListView_GetISearchString
    Retrieves the incremental search string of a list-view control. You can use this macro or send the LVM_GETISEARCHSTRING message explicitly.
      

  2.   

    嗯哪 英文说明就是这是个获取增量搜索参数的消息或宏,可以直接发送该消息或使用这个宏。可不可以理解为对listview发送该消息呢?
      

  3.   

    我尝试过用这个消息发送给listview,由于不明白第二个参数怎么用,试了几次都返回0。
      

  4.   

    可以理解为对listview发送该消息
    那个宏是网络上流传的一个消息大全组成的函数
    我测试了,不能用
      

  5.   

    这个看过了吗 http://msdn.microsoft.com/en-us/library/bb774951(VS.85).aspx
    说是要发送两次消息,里面的链接都是英文的
      

  6.   

    应用的例子:你在资源管理器中,快速输入几个字母,焦点就会自动定位到匹配的文件或目录;
    如果稍做停顿,后续的输入就被当作重新查找的内容。所以要用 LVM_GETISEARCHSTRING 在自动清除前取得非空内容,在 KeyUp 事件中调用最合适。
      

  7.   

    没用过,但比较同意老鸟的看法。只是感觉资源管理器似乎是在KeyDown中调用该消息的。LVM_GETISEARCHSTRING这个消息,按MSDN的解释,它应该在ListView取得键盘输入焦点时才能使用,发送此消息,可将用户在一定时限内连续键入的每个字符,增量连接成为查询的关键字。并通过消息,返回查询结果,同时,自动定位到匹配项上。MSDN,还提示,如果,接收缓存不足,也不能得到结果。所以,一般需发送该消息两次,第一次的lparam参数,可用 Byval 0& 传入,以通过返回值取得所需缓存的长度,第二次发送,需发送一个至少为长度+1的Byte数组(因为,最后需容下一个vbNullChar的结束符)。LVM_GETISEARCHSTRINGW,是Unicode字符,情况可能有点不同,应该无需结束符。纯属猜测,有兴趣的可做实验验证一下。
      

  8.   

    Returns the number of characters in the incremental search string, not including the terminating NULL character, or zero if the list-view control is not in incremental search mode.  incremental search mode 在什么地方设置呢?我觉得问题出在这里,似乎有这么个属性
      

  9.   

    Option ExplicitPrivate Sub Form_Load()
        ListView1.ColumnHeaders.Clear
        ListView1.ColumnHeaders.Add , , "Name", 1440
        ListView1.View = lvwReport
        ListView1.ListItems.Add , , "eeyore"
        ListView1.ListItems.Add , , "pig"
        ListView1.ListItems.Add , , "piglet"
        ListView1.ListItems.Add , , "tiger"
        ListView1.ListItems.Add , , "tiger zhao"
        ListView1.ListItems.Add , , "tigger"
        ListView1.ListItems.Add , , "wine"
        ListView1.ListItems.Add , , "winnie"
    End SubPrivate Sub ListView1_KeyUp(KeyCode As Integer, Shift As Integer)
        Dim a() As Byte
        Dim s As String
        Dim l As Long
        
        l = SendMessage(ListView1.hWnd, LVM_GETISEARCHSTRING, ByVal 0&, ByVal 0&)
        Debug.Print l
        If l = 0 Then
            Text1 = vbNullString
        Else
            ReDim a(l + 1)
            SendMessage ListView1.hWnd, LVM_GETISEARCHSTRING, ByVal 0&, a(0)
            Text1 = StrConv(LeftB(a, l), vbUnicode)
        End If
    End Sub