Newsgroup: it.comp.lang.visual-basic
Titolo: Invocare un Evento.

Allora ho il seguente problema io ho una DirList (quella tipo gestione
risorse con tutte le 
cartelle per capirsi) e con il click destro del mouse voglio avere
prima un click in quel 
punto cosě che si evidenzia la cartella dove č il puntatore e poi deve
eseguire il click del 
pulsante destro.
Ora che succede che se sul mousedown con button=2 io chiamo l'evento
dir1_click non 
genera l'evento click e nemmeno scrivendo Dir1_mousedown 1 ,shift,x,y
si genera 
l'evento.
Praticamente la routine del mousedown e del click vengono eseguite ma
non si invoca 
l'evento vero e proprio.
Come posso fare a far invocare l'evento vero e proprio, cioč il click
con il tasto sinistro 
nel punto del puntatore?
Grazie mille a chiunque mi risponda.

 nel punto del puntatore?
Occhio e croce, penso ti basti inviare il messaggio di WM_LBUTTONDOWN seguito da un WM_LBUTTONUP alla window procedure del
DirList.
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb

Scusa non sono molto bravo con le api ma come le chiamo questi due
messaggi alla window procedure?


 DirList.
Guarda, io non ho la piu' pallida idea su come si usa l'oggetto DirList, quindi ho provato con una TextBox e funziona.
Prova ad applicarlo alla DorList e poi fammi sapere.
*****************************************************************************************
*** IN UN MODULO SCRIVI QUESTE DICHIARAZIONI
*****************************************************************************************
Type POINTAPI
        x As Long
        y As Long
End Type
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long,
ByVal lParam As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long,
lParam As Any) As Long
Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_MBUTTONDBLCLK = &H209
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const MK_CONTROL = &H8
Public Const MK_LBUTTON = &H1
Public Const MK_MBUTTON = &H10
Public Const MK_RBUTTON = &H2
Public Const MK_SHIFT = &H4
*****************************************************************************************
*** IN UN FORM CREA UNA TEXT-BOX E INCOLLA QUESTO.
*** quando hai capito come funziona, prova ad applicarlo alla DirList
*****************************************************************************************
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim Esito As Long
    Dim Point As POINTAPI
    Dim StrAppo$
 
    If Button = 1 Then
        Call GetCursorPos(Point)
        Call ScreenToClient(Text1.hwnd, Point)
 
        StrAppo$ = Right$("0000" & Hex$(Point.x), 4)
        StrAppo$ = "&H" & Right$("0000" & Hex$(Point.y), 4) & StrAppo$
 
        Esito = PostMessage(Text1.hwnd, WM_RBUTTONDOWN, MK_RBUTTON, Val(StrAppo$))
        Esito = PostMessage(Text1.hwnd, WM_RBUTTONUP, MK_RBUTTON, Val(StrAppo$))
        DoEvents
        Beep
    End If
End Sub
