Deutsch
Forum

Erledigt: Problem mit UserMessage in SubClassProc

 

Uwe
''Pascal''
Niemeier
Hi Leute!

Folgende Situation:
Innerhalb eine SubClassProc  wird - sobald ein bestimmtes Ereignis erkannt wird - eine selbstdefinierte Usermessage ans Hauptfenster geschickt.
Der Zweck ist, auf diese Weise Parameter in die Eingabeschleife des Hauptprogrammes einzubringen.
Außerdem ist sichergestellt, daß WaitInput  durchbrochen wird.
(Anwendungsbeispiel TreeView oder GridBox: Ändern der Auswahl per Cursortasten z.B. wird von WaitInput  nicht erkannt)

Das Problem ist, daß die Message offensichtlich nur einmal gesendet wird, aber in der Eingabeschleife zweimal(!) ankommt:
KompilierenMarkierenSeparieren
window 600,600
print Bitte Leertaste  drücken!
 $H Messages.ph
 $H commctrl.ph
subclassproc---------------------------------------------

if subclassmessage(%hwnd,~WM_KEYDOWN)

    if &swparam=32

        sendmessage(%hwnd,5000,11,22)
        print Gesendet!

    endif

endif

endproc--------------------------------------------------
usermessages 5000
subclass %hwnd,1

while 1

    waitinput
    print Empfangen: ,%umessage,&uwparam,&ulparam

endwhile


Natürlich läßt sich das Ganze irgendwie hinbiegen (Timer, globale Variablen usw.), aber eigentlich sollte das doch funktionieren?

BTW: Bei Verwendung der 11.2ß zeigt sich außerdem, daß %UMessage  zwar zurückgesetzt wird, nicht aber &UlParam  + &UwParam . Absicht?

SeeYou
Pascal
 
18.03.2009  
 



Sicher dass nicht eine weitere andere Message das Waitinput zusätzlich unterbricht?
 
18.03.2009  
 




Uwe
''Pascal''
Niemeier
Hi iF!

In der 11.2ß wird %UMessage  durch WaitInput  wieder zurückgesetzt ; anders gesagt: %UMessage  ist nur dann <> 0, wenn auch eine Usermessage empfangen wurde (so habe ich es jedenfalls verstanden). Da wird dieser Effekt noch deutlicher.
 
18.03.2009  
 



Stimmt!
 
18.03.2009  
 




RGH
Uwe Pascal Niemeier
Das Problem ist, daß die Message offensichtlich nur einmal gesendet wird, aber in der Eingabeschleife zweimal(!) ankommt


Ja, das kann seit 10.0 passieren. Der Grund liegt darin, dass seit 10.0 die Userrmessages gestackt sind, was dazu führte, dass sie tatsächlich nur im Waitinput ausgewertet wurden. Obwohl nie vorgesehen funktionierten die Usermessages vorher aber auch ohne Waitinput, was einigen nun fehlte. Der Versuch, das wieder hinzubekommen, hat offensichtlich in bestimmten Situationen Nebeneffekte.

Für dienächste Version probiere ich hier eine andere Lösung.

Uwe Pascal Niemeier
BTW: Bei Verwendung der 11.2ß zeigt sich außerdem, daß %UMessage  zwar zurückgesetzt wird, nicht aber &UlParam  + &UwParam . Absicht?


Ja, das war schon immer so. Die beiden Systemvariablen behalten ihren Wert, bis eine neue Usermessage ihn verändert. Die Werte sind also nur dann gültig, wenn %UMessage ungleich 0 ist.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
19.03.2009  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

987 Betrachtungen

Unbenanntvor 0 min.
H.Brill06.06.2021
Rainer Hoefs12.06.2019
AndreasS29.11.2018
Ernst28.04.2016
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Uwe ''Pascal'' Niemeier (2x)
iF (2x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie