
13/07/2008, 11:36
|
| | Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 20 años Puntos: 3 | |
Respuesta: Cabecera Listview hola fijate de este modo
Código:
Option Explicit
Public Type POINTAPI
x As Long
y As Long
End Type
Private Type HD_HITTESTINFO
pt As POINTAPI
flags As Long
iItem As Long
End Type
Private Type TLoHiLong
Lo As Integer
Hi As Integer
End Type
Private Type TAllLong
All As Long
End Type
Private Const HDM_HITTEST As Long = &H1206
Private Const LVM_FIRST = &H1000
Private Const LVM_GETHEADER As Long = (LVM_FIRST + 31)
Private Const WM_LBUTTONUP As Long = &H202
Private Const WM_RBUTTONUP As Long = &H205
Private Const GWL_WNDPROC = (-4)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Dim PrevProc As Long
Public Sub HookListView(hwnd As Long)
Dim HandleHEADER As Long
HandleHEADER = SendMessage(hwnd, LVM_GETHEADER, 0, 0)
PrevProc = SetWindowLong(HandleHEADER, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookListView(hwnd As Long)
Dim HandleHEADER As Long
HandleHEADER = SendMessage(hwnd, LVM_GETHEADER, 0, 0)
SetWindowLong HandleHEADER, GWL_WNDPROC, PrevProc
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
Dim hti As HD_HITTESTINFO
Dim mLH As TLoHiLong, mAL As TAllLong
If uMsg = WM_LBUTTONUP Or uMsg = WM_RBUTTONUP Then
mAL.All = lParam
LSet mLH = mAL
hti.pt.x = mLH.Lo
hti.pt.y = mLH.Hi
SendMessage hwnd, HDM_HITTEST, 0&, hti
If hti.iItem > -1 Then
Select Case uMsg
Case WM_LBUTTONUP: EnventLeftButtonUp hti.iItem + 1
Case WM_RBUTTONUP: EnventRightButtonUp hti.iItem + 1
End Select
End If
End If
End Function
'aca lo que queres
Private Sub EnventLeftButtonUp(ByVal Columna As Long)
Debug.Print Columna
'Form1.PopupMenu Form1.archivo
End Sub
'aca lo que queres
Private Sub EnventRightButtonUp(ByVal Columna As Long)
Debug.Print Columna
End Sub
Saludos |