就是使所有图标都是原地不能动的,能被选中,而不能拖动。

解决方案 »

  1.   

    '------------------- 窗体 -------------------
    Option ExplicitPrivate Sub Form_Load()
        Dim i As Long
        Dim oItem As ListItem
        
        Dim hwnd As Long
        'Call InitExceptionHandler
        
        For i = 1 To 100
            Set oItem = ListView1.ListItems.Add(, , i)
            oItem.SubItems(1) = i
        Next
        
        hwnd = ListView1.hwnd
        
        '子类处理
        glDefWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
        
       If glDefWindowProc Then
            '结束子类处理
            SetWindowLong ListView1.hwnd, GWL_WNDPROC, glDefWindowProc
            glDefWindowProc = 0
       End If
    End Sub
    '------------------- 模块文件 -------------------
    Option ExplicitPublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Const GWL_WNDPROC = (-4)
    Public Const GCL_WNDPROC = (-24)Public Const LVM_FIRST As Long = &H1000
    Public Const LVM_SETITEMPOSITION  As Long = LVM_FIRST + 15
    Public Const LVM_SETITEMPOSITION32  As Long = LVM_FIRST + 49Public glDefWindowProc As LongPublic Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        On Error Resume Next
        Select Case uMsg
            Case LVM_SETITEMPOSITION, LVM_SETITEMPOSITION32
                WindowProc = 0
            Case Else
                WindowProc = CallWindowProc(glDefWindowProc, hwnd, uMsg, wParam, lParam)
        End Select
    End Function