EventwParam() et EventlParam() récupèrent les valeurs des paramètres lParam et wParam sans passer par une Callback.
AdvancedGadgetEvents() permet d'activer ou non la gestion avancée des évènements pour les gadgets, type Left fdouble click ou autres (?) mais la doc est assez succinte et la Doc En dit qu'il faut se référer aux différents gadgets pour les événements (?).
Par exemple avec un Drag 'nd drop de fichiers sur une fenêtre, on récupère le fait que l'on vient de glisser des fichiers sur la fenêtre avec le message #WM_DROPFILES
wParam à ce moment contient le handle de la Structure qui contient les fichiers glissés et ce Handle pourra être utiliser par l'API
DragQueryFile() pour récupérer les infos des fichiers
Dans la boucle, on récupère wParam avec
EventwParam()
Voici un exemple simple, faut l'exécuter et ouvrir l'exploreur window, sélectionner quelques fichiers et les glisser sur la fenêtre.
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 300, 185, #PB_Window_SystemMenu |#PB_Window_ScreenCentered, "wParam")
; force la fenêtre à rester au premier plan
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
; autorise la fenêtre à accepter les fichier Drag 'nd drop
DragAcceptFiles_(WindowID(), #True)
Repeat
Select WaitWindowEvent()
Case #WM_DROPFILES
; *********************************
DropHandle.l = EventwParam()
; *********************************
; lors du premier appel de DragQueryFile, on récupère le nombre de fichiers glissés
NombreFichiers.l = DragQueryFile_(DropHandle, -1, "", 0)
For index = 0 To NombreFichiers - 1
; cet appel de DragQueryFile retourne la taille nécessaire du buffer
TailleBuffer.l = DragQueryFile_(DropHandle, index, 0, 0)
Fichier.s = Space(TailleBuffer)
TailleBuffer + 1
DragQueryFile_(DropHandle, index, Fichier, TailleBuffer)
Chaine.s = Chaine+ Fichier+Chr(10)
Next
DragFinish_(DropHandle) ; c'est terminé, on libère les ressources
; allouées par le système
; la fenêtre ne restera pas au premier plan pour afficher la messagerequester
SetWindowPos_(WindowID(), #HWND_NOTOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
; on affiche tous les fichiers
MessageRequester("Fichiers", Chaine, #MB_ICONASTERISK|#PB_MessageRequester_Ok )
Case #PB_EventCloseWindow
quit + 1
EndSelect
Until quit
EndIf