[c++] Problem mit WS_TABSTOP WINAPI

radazong

Mitglied
Hallo!

Wie die Überschrift schon vermuten lässt habe ich ein Problem mit WS_TABSTOP in einer WINAPI Anwendung.

Ich habe ein Hauptfenster in dem sich mehrere Editboxen und ein Button befinden, und wollte diese eben der Reihe nach mit der TAB Taste focussieren. Dazu habe ich mir erlesen, dass ich bei den entsprechenden Fenstern den Stil WS_TABSTOP angeben muss - gelesen, getan.

Nur tut sich leider nüscht :( . Was genau mache ich denn falsch, bzw was vergesse ich?!
Hier ein Beispiel Quelltextauszug:
C++:
hEdit=CreateWindowEx(WS_EX_CLIENTEDGE,"Edit","",
                                    WS_CHILD|WS_VISIBLE|WS_TABSTOP,
                                    10,10, 100,30,
                                    hWnd,0,hInstance,0);

Die anderen Editboxen habe ich genauso erzeugt. Ich meine, es ist kein Weltuntergang dass es nicht klappt, nur wer möchte schon gern auf Comfort verzichten ;).

Liebe Grüße, und im Voraus schonmal schönen Dank,

radazong
 
In deiner MessageLoop die Funktion IsDialogMessage einbinden; wenn diese TRUE zurückgibt, dann nicht mehr Translate/DispatchMessage aufrufen.

IsDialogMessage funktioniert entgegen der Annahme auch mit Nicht-Dialog-Fenstern.
 
:) Hallo!

Vielen lieben Dank für die Antwort, funktioniert alles bestens :).
Kannst du mir vielleicht auch erzählen wieso es sich so verhält, und wieso ich Translate- und DispatchMessage ausklammern muss? Wenn ich das jetzt noch verstünde, wäre ich superglücklich :).

Greetz,

radazong
 
Steht in der MSDN unter IsDialogMessage eigentlich recht ausführlich.

Die Nachricht prüft, ob bei den Nachrichten welche dabei sind, die eine Fokus-Änderung auslösen. Wenn ja, dann auch, ob diese machbar sind. Wenn ja, werden die entsprechenden Nachrichten ausgelöst (und automatisch versendet). Deshalb sollte man die dann auch nicht mehr weitergeben, weil die Reaktion darauf schon erfolgt ist.
 
Zurück