Español
C ++ Foro

&wParam enthält no el richtigen Valor

 

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ón
Def 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
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
13.11.2005  
 




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ón
Def 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ón
Def 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
...
Long Mouspos#,0 = LoWord(&ULParam)
Long Mouspos#,4 = HiWord(&ULParam)

If (ChildWindowFromPoint(%hwnd,Mouspos#) =

 

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
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
14.11.2005  
 




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
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
14.11.2005  
 





PS: Yo finde el Smilie así G**L.
 
14.11.2005  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

4.015 Views

Untitledvor 0 min.
Torben Nissen02.02.2013

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie