| |
|
|
Georg Hovenbitzer | allô zusammen,
beim nachfolgenden Code habe je cela Problem, dass pour qui Übersetzung dans qui Variable &wParam pas qui richtig Wert enthalten ist. Es sollte qui gleiche Wert son comment Button&, ist mais chez mir toujours 2. Alle anderen Werte stimmen ! KompilierenMarqueSéparationDef 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
Fin
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 12.11.2005 ▲ |
|
|
|
|
Sebastian König | allô Georg,
malheureusement scheint cela une qui Situationen trop son, dans denen sich qui unvermeidlichen kleinen Unterschiede im Message-Handling bemerkbar faire
si je cela (avec Spy++) richtig ermittelt habe, stammt qui Wert, qui dans &WParam steht, pas de WM_MOUSEACTIVATE , mais de einer vorangegangenen WM_SETCURSOR -nouvelle. c'est alors plus ou bien moins Zufall, dass cela so passt et peut sich wohl pas avec Sicherheit reproduzieren...
si es seulement tout autor allez, den Rechtklick sur den Button abzufragen, devrait es besser marcher, WM_PARENTNOTIFY comme UserMessage trop prendre.
MfG
Sebastian |
|
|
| |
|
|
|
Georg Hovenbitzer | allô Sebastian,
merci pour den Tip avec WM_PARENTNOTIFY. seulement comment bekomme je eh bien à qui Adresse de Button& sans &wParam abzufragen ? la hâte du là une Tip pour mich ? KompilierenMarqueSéparationDef 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
Fin
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 13.11.2005 ▲ |
|
|
|
|
Georg Hovenbitzer | allô Sebastian,
j'ai un Solution trouvé qui dans qui Übersetzten Version très bien funktioniert.
je lese avec GetCursorPos() qui Mausposition aus et WindowFromPoint() welches Contrôle sich au-dessous est. KompilierenMarqueSéparationDef 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#
Fin
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 14.11.2005 ▲ |
|
|
|
|
Sebastian König | allô Georg,
étais quelque chose plus rapide comme je Zur Vollständigkeit ici encore un alternativer (mais entier ähnlicher) Vorschlag:
chez WM_PARENTNOTIFY wird (jedenfalls chez Mausereignissen) aussi qui aktuelle Mausposition dans &ULParam (HiWord/LoWord) transfert. ici serait es alors aussi so marcher: KompilierenMarqueSéparation attention: ChildWindowFromPoint(), là qui Koordinaten relativ sommes.
MfG
Sebastian
P.S.: dans Deinem Code ist qui Aufruf Windowfrompoint(@Long(Mauspos#,0),@Long(Mauspos#,4)) pas entier richtig... es sollte simple WindowFromPoint(Mouspos#) son |
|
|
| |
|
|
|
Georg Hovenbitzer | allô Sebastian,
vielen Dank pour den Tip. chez WindowFromPoint muss je dir wiedersprechen. le son Win32.hlp et MSDN la hâte du zwar droite, mais es führt chez mir toujours trop bösen Abstürzen. si on ici dans qui API banque de données schaut et im Internet, findet on toujours mon Solution avec deux Parametern. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 14.11.2005 ▲ |
|
|
|
|
Sebastian König | allô Georg,
oui, sorry - tu as naturellement droite! je hatte qui Doku wohl trop flüchtig gelesen et pas realisert, dass qui Funktion réellement une POINT (zusammengesetzt aus 2 Longs) et plan pas qui Adresse einer POINT-Struktur erwartet. cela gleiche gilt pour ChildWindowFromPoint...
Nochmal sorry pour qui Verwirrung!
MfG
Sebastian |
|
|
| |
|
|
|
|
PS: je trouve cela Smilie so G**L. |
|
|
| |
|
|