devxlogo

Prevent dragging elements in a ListView control

Prevent dragging elements in a ListView control

The ListView control doesn’t expose any property that lets you disable the dragging of its elements. To do so, you must trap the WM_NOTIFY message that the ListView control sends its parent form when the drag operation begins, and “eat” it. Using the MSGHOOK.DLL subclassing library it’s easy to accomplish it:

' REQUIRES THE MSGHOOK.DLL LIBRARYConst WM_NOTIFY = &H4EConst LVN_FIRST = -100&Const LVN_BEGINDRAG = (LVN_FIRST - 9)Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _    Any, source As Any, ByVal bytes As Long)Private Type NMHDR   hwndFrom As Long   idFrom As Long   code As LongEnd TypeDim WithEvents FormHook As MsgHookPrivate Sub Form_Load()    ' start subclassing the current form    Set FormHook = New MsgHook    FormHook.StartSubclass Me    ' fill the ListView1 control with data    ' ... (omitted) ...End Sub' this event fires when the form is sent a messagePrivate Sub FormHook_BeforeMessage(uMsg As Long, wParam As Long, lParam As Long, _    retValue As Long, Cancel As Boolean)        ' the ListView might be notifying something to its parent form    If uMsg = WM_NOTIFY Then        ' copy the MNHDR structure pointed        ' to by lParam to a local UDT        Dim nmh As NMHDR        CopyMemory nmh, ByVal lParam, Len(nmh)        ' check whether the notification is from the ListView1 control        ' and whether it's the beginning of a drag operation        If nmh.hwndFrom = ListView1.hWnd And nmh.code = LVN_BEGINDRAG Then            ' yes, cancel this operation            retValue = 1            Cancel = True        End If    End IfEnd Sub

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist