LISTVIEW中item与图片邦定,但是item可以在其范围内拖动,怎样可以禁止拖动?

解决方案 »

  1.   

    我也有同感,真接拖出来的Listview控件图标是可以拖动的,但可以用api建立listview的话就不会拖动了.只不过那个用api建立的listview写起来有些麻烦.
      

  2.   

    '---frmMain.frm--------
    Private Sub Form_Load()
       Dim li As ListItem
       Dim lCount As Long
       
       'Call InitExceptionHandler
       
       With ListView1.ListItems
            For lCount = 1 To 100
                Set li = .Add(, , lCount)
                li.SubItems(1) = lCount
                li.SubItems(2) = lCount
            Next
       End With
       
       glLVDefWindowProc = SetWindowLong(ListView1.hwnd, GWL_WNDPROC, AddressOf LVWindowProc)
        
    End SubPrivate Sub Form_Unload(Cancel As Integer)
       If glLVDefWindowProc Then
            '结束子类处理
            SetWindowLong ListView1.hwnd, GWL_WNDPROC, glLVDefWindowProc
            glLVDefWindowProc = 0
       End IfEnd Sub
    '----main.bas--------
    Option Explicit
    Public 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 Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Const GWL_WNDPROC = (-4)Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)Public Type NMHDR
       hwndFrom As Long        ' Window handle of control sending message
       idFrom As Long   ' Identifier of control sending message
       code As Long      ' Specifies the notification code
    End TypePublic Type NMHEADER
        hdr As NMHDR
        iItem As Long
        iButton As Long
        pitem As Long
    End TypePublic Const WM_NOTIFY& = &H4EPublic Const HDN_FIRST = -300&
    Public Const HDN_LAST = -399&Public Const HDN_ITEMCHANGINGA As Long = HDN_FIRST - 0
    Public Const HDN_ITEMCHANGINGW As Long = HDN_FIRST - 20
    Public Const HDN_ITEMCHANGEDA As Long = HDN_FIRST - 1
    Public Const HDN_ITEMCHANGEDW As Long = HDN_FIRST - 21
    Public Const HDN_ITEMCLICKA As Long = HDN_FIRST - 2
    Public Const HDN_ITEMCLICKW As Long = HDN_FIRST - 22
    Public Const HDN_ITEMDBLCLICKA As Long = HDN_FIRST - 3
    Public Const HDN_ITEMDBLCLICKW As Long = HDN_FIRST - 23
    Public Const HDN_DIVIDERDBLCLICKA As Long = HDN_FIRST - 5
    Public Const HDN_DIVIDERDBLCLICKW As Long = HDN_FIRST - 25
    Public Const HDN_BEGINTRACKA As Long = HDN_FIRST - 6
    Public Const HDN_BEGINTRACKW As Long = HDN_FIRST - 26
    Public Const HDN_ENDTRACKA As Long = HDN_FIRST - 7
    Public Const HDN_ENDTRACKW As Long = HDN_FIRST - 27
    Public Const HDN_TRACKA As Long = HDN_FIRST - 8
    Public Const HDN_TRACKW As Long = HDN_FIRST - 28
    Public Const HDN_GETDISPINFOA As Long = HDN_FIRST - 9
    Public Const HDN_GETDISPINFOW As Long = HDN_FIRST - 29
    Public Const HDN_BEGINDRAG As Long = HDN_FIRST - 10
    Public Const HDN_ENDDRAG As Long = HDN_FIRST - 11
    Public Const HDN_FILTERCHANGE As Long = HDN_FIRST - 12
    Public Const HDN_FILTERBTNCLICK As Long = HDN_FIRST - 13Public glLVDefWindowProc As LongPublic Function LVWindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Select Case uMsg
        Case WM_NOTIFY
            Dim tHD As NMHDR
            CopyMemory tHD, ByVal lParam, Len(tHD)
            Select Case tHD.code
            Case HDN_BEGINTRACKA, HDN_DIVIDERDBLCLICKA, HDN_BEGINDRAG, HDN_TRACKA
                Debug.Print "1"
                LVWindowProc = 1
                Exit Function
            End Select
        End Select
        LVWindowProc = CallWindowProc(glLVDefWindowProc, hwnd, uMsg, wParam, lParam)
    End Function
      

  3.   

    把VIEW属性改成lvwList或lvwReport
      

  4.   

    ansionhuang(毛毛雨-我是外星人,所以我什么都不知道) 的办法不行,因为我就是要item和图片绑定。kmzs(.:RNPA:.山水岿濛) 说的自动拖动属性没有找到,请你说清楚一点,谢谢了:)至于前面daisy8675(莫依) 的方法,我还没有试,主要是最近太忙,但是我想应该有简单的解决方法,呵呵。希望高人指点一下:)