Fokusrahmen zeichnen (ja / nein)
-
Ab Win2k ist es so das der Fokusrahmen nur gezeichnet wird (z.B. Button) wenn das Fenster mit der Tastatur geöffnet wurde oder man mit Hilfe der Tastatur (z.B. Tab-Taste) den Fokus geändert hat.
Meine Frage:
Wie kann ich ermitteln ob ich den Fokusrahmen zeichnen muss oder nicht?
-
Hö?
Das ist nicht so ...
-
Vielleicht mit OnFocus(), wird wh*****einlich WM_FOCUS oder so ähnlich sein (Grad keine MSdn installiert)
-
Doch das ist so. Aber ist das erst seid Windows 2000 so? Ich dachte schon immer. Meinst du beim Ownerdraw? Kann dir aber auch nicht helfen.
-
dEUs: Erstelle mal eine Standard Dialog-Anwendung mit dem Assistenten. Dann starte das Programm mit F5 (Tastatur) -> Ok-Button hat einen speziellen Fokusrahmen (gepunktet). Dann beende das Programm und starte es über das Visual C++ Menü mit der Maus -> der Ok-Button hat diesen Rahmen nicht.
-
Leider nicht. Die Parameter ändern sich nicht.
-
Hi,
mit WM_QUERYUISTATE sollte man das abfragen könnnen.
-
Cool. Dankeschön.
Jetzt hab ich nur noch das Problem das mein Header zu alt sind.
Wäre jmd. so nett und kopiert mir die defines? (Oder die Header Datei schicken -ich kann es mir dann selbst raus suchen) - Danke.WM_QUERYUISTATE
WM_CHANGEUISTATE
WM_UPDATEUISTATEUIS_CLEAR
UIS_INITIALIZE
UIS_SET
UISF_HIDEACCEL
UISF_HIDEFOCUS
UISF_ACTIVE
-
#if(_WIN32_WINNT >= 0x0500) #define WM_CHANGEUISTATE 0x0127 #define WM_UPDATEUISTATE 0x0128 #define WM_QUERYUISTATE 0x0129 /* * LOWORD(wParam) values in WM_*UISTATE* */ #define UIS_SET 1 #define UIS_CLEAR 2 #define UIS_INITIALIZE 3 /* * HIWORD(wParam) values in WM_*UISTATE* */ #define UISF_HIDEFOCUS 0x1 #define UISF_HIDEACCEL 0x2 #if(_WIN32_WINNT >= 0x0501) #define UISF_ACTIVE 0x4 #endif /* _WIN32_WINNT >= 0x0501 */ #endif /* _WIN32_WINNT >= 0x0500 */ #endif
[ Dieser Beitrag wurde am 25.02.2003 um 13:53 Uhr von Trolli editiert. ]
-
Und nochmal Dankeschön.