| |
|
|
Georg Hovenbitzer | ¡Hola zusammen,
beim nachfolgenden Code Yo el problema, dass después de el Übersetzung en el Variable &wParam no correcto Valor enthalten es. Lo debería el gleiche Valor ser como Button&, es pero en me siempre 2. Todos los demás Werte stimmen ! KompilierenMarcaSeparaciónDef HiWord(1) (@&(1) $10000)
Declare Button&
WindowStyle 512 + 16 + 8 + 2
WindowTitle "Test"
Window 100,100-400,300
UserMessages $0021,$0111,$0010
~WM_MOUSEACTIVATE,~WM_COMMAND,~WM_CLOSE
Button& = @Create("Button",%hWnd,"rechts Klick?",100,100,200,100)
WhileNot %UMessage = $0010
WaitInput
If %UMessage =$0021 ~WM_MOUSEACTIVATE
Print &wParam
Print Button&
Print HiWord(&ULParam)
If (&wParam = Button&) And (HiWord(&ULParam) = $0204) ~WM_RBUTTONDOWN
Print "Treffer"
EndIf
EndIf
EndWhile
End
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 12.11.2005 ▲ |
|
|
|
|
Sebastian König | ¡Hola Georg,
desafortunadamente scheint el una el Situationen a ser, en denen el unvermeidlichen pequeño Unterschiede en el Message-Handling bemerkbar hacer
Wenn Yo el (con Spy++) correcto ermittelt habe, stammt el Valor, el en &WParam es, no de WM_MOUSEACTIVATE , pero de uno vorangegangenen WM_SETCURSOR -Nachricht. Es also o más weniger Zufall, dass el así passt y lässt se probablemente no con Sicherheit reproduzieren...
Wenn lo sólo por lo tanto va, el Rechtklick en el Button abzufragen, debería lo mejor trabajo, WM_PARENTNOTIFY como UserMessage a nehmen.
MfG
Sebastian |
|
|
| |
|
|
|
Georg Hovenbitzer | ¡Hola Sebastian,
danke para el Tip con WM_PARENTNOTIFY. Nur como bekomme Yo nun a el Adresse de Button& sin &wParam abzufragen ? Hast du como una Tip para mich ? KompilierenMarcaSeparaciónDef HiWord(1) (@&(1) $10000)
Def LoWord(1) @&(1) & $FFFF
Declare Button&
WindowStyle 512 + 16 + 8 + 2
WindowTitle "Test"
Window 100,100-400,300
UserMessages $0111,$0010,$0210
~WM_MOUSEACTIVATE $0021
~WM_COMMAND $0111
~WM_CLOSE $0010
Wm_parentnotify $0210
Button& = @Create("Button",%hWnd,"rechts Klick?",100,100,200,100)
WhileNot %UMessage = $0010
WaitInput
If %UMessage =$0210 Wm_parentnotify
Print LoWord(&UwParam)," = ","516" ~WM_RBUTTONDOWN
Print "?"," = ",Button&
If (&wParam = Button&) And (LoWord(&UwParam) = 516) ~WM_RBUTTONDOWN
Print "Treffer"
EndIf
EndIf
EndWhile
End
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 13.11.2005 ▲ |
|
|
|
|
Georg Hovenbitzer | ¡Hola Sebastian,
Yo una Solución gefunden el en el Übersetzten Versión muy bien funktioniert.
Yo lese con GetCursorPos() el Mausposition de y WindowFromPoint() welches Control se darunter befindet. KompilierenMarcaSeparaciónDef GetCursorPos(1) !"USER32","GetCursorPos"
Def WindowFromPoint(2) !"USER32","WindowFromPoint"
Def Hiword(1) (@&(1) $10000)
Declare FSpeicher&
Declare TFSpeicher&
Declare MausPos#
Dim MausPos#,8
WindowStyle 512 + 16 + 8 + 2
Windowtitle "Test"
Window 0,0-800,600
Usermessages $0021,$0111,$0010
~WM_MOUSEACTIVATE,~WM_COMMAND,~WM_CLOSE
FSpeicher& = @Control("COMBOBOX","",$54310003,330,32,100,90,%hWnd,90,%hInstance)
TFSpeicher& = @Create("Tooltip",%hWnd,FSpeicher&,"siehe rechte Maustaste")
WhileNot %Umessage = $0010
WaitInput
If (%Umessage =$0021) And (Hiword(&Ulparam) = $0204)~WM_MOUSEACTIVATE
Clear MausPos#
GetCursorPos(MausPos#)
If (WindowFromPoint(@Long(MausPos#,0),@Long(MausPos#,4)) = FSpeicher&)~WM_RBUTTONDOWN
Print "Treffer"
EndIf
EndIf
EndWhile
Dispose MausPos#
End
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 14.11.2005 ▲ |
|
|
|
|
Sebastian König | ¡Hola Georg,
warst algo más rápido como Yo A Vollständigkeit hier todavía una alternativer (aber bastante ähnlicher) Vorschlag:
En WM_PARENTNOTIFY se (jedenfalls en Mausereignissen) auch el aktuelle Mausposition en &ULParam (HiWord/LoWord) transferencia. Hier sería lo also auch así trabajo: KompilierenMarcaSeparación Achtung: ChildWindowFromPoint(), como el Koordinaten relativ son.
MfG
Sebastian
P.S.: In Deinem Code es el Aufruf Windowfrompoint(@Largo(Mauspos#,0),@Largo(Mauspos#,4)) no bastante correcto... lo debería simplemente WindowFromPoint(Mouspos#) ser |
|
|
| |
|
|
|
Georg Hovenbitzer | ¡Hola Sebastian,
vielen Dank para el Tip. En WindowFromPoint muss Yo dir wiedersprechen. Laut Win32.hlp y MSDN hast du zwar bastante, pero führt en me siempre a bösen Abstürzen. Wenn uno aquí en el API Datenbank schaut y Internet, findet uno siempre mi Solución con zwei Parametern. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 14.11.2005 ▲ |
|
|
|
|
Sebastian König | ¡Hola Georg,
sí, sorry - Usted hast natürlich bastante! Tuve el Doku wohl a flüchtig gelesen y no realisert, dass el Función tatsächlich una POINT (zusammengesetzt de 2 Longs) y eben no el Adresse uno POINT-Struktur esperado. Das gleiche gilt para ChildWindowFromPoint...
Nochmal sorry para el Verwirrung!
MfG
Sebastian |
|
|
| |
|
|
|
|
PS: Yo finde el Smilie así G**L. |
|
|
| |
|
|