Focus auf den Fensterhintergrund setzen
-
Hej,
ich schreibe (mit Hilfe der MFC) gerade ein Sudoku. Das Spielfeld male ich auf den Fensterhintergrund per GDI. Daneben habe ich dann ein paar Button erstellt, z.B. zum Testen des Spielfeldes.
Das Problem ist, sobald der Focus auf die Buttons geht, passiert direkt nach Programmstart, kann ich mich in dem Sudokufeld per Tastatur nicht mehr bewegen, bzw. keine Zahlen mehr eintragen.Bevor ich die Buttons eingefuegt habe ging es. Frage fuer die Tasteneingaben die 'OnKeyUp' Funktion ab.
Ich muesste irgendwie den Focus auf den Hintergrund des Fensters setzen denke ich.
Waere toll, wenn mir jmd. helfen kann :xmas1:
MfG, Tim
-
Nur mal als Zwischenfrage: Wie hast du dich in GDI eingearbeitet?
Kannst du evtl. ein gutes Buch dazu empfehlen?
-
Hej,
naja also ein GDI Experte bin ich noch nicht

Aber habe das meiste aus dem Internet. Hier ist z.B. ein ganz guter Link:
http://www.cpp-tutor.de/mfc/toc.htm
Da gibt es auch ein allgemeines C++ Tutorial.Ansonsten habe ich bei spezielleren Fragen einfach mit google.de gesucht.
MfG, Tim
-
Das geht nicht! Ein Dialog setzt automatisch den Focus immer an das erste Child Contro, oder das letzte Aktive Child Control. Dialog sind nicht dafür konstruiert selber den Focus zu behalten.
Das ist By Design. Du kannst natürlich in die Behandlung von WM_SETFOCUS eingreifen, aber das nächste Problem taucht spätestens auf wenn ein Schalter dann angeklickt wird, denn dan wird wieder der Fokus versetzt, oder wenn TAB gedrückt wird....
Ein Dialog un Buttons eignen sich nicht für solch ein Sodoku Spielfeld!
-
Hej,
@Martin Richter:
Also wenn der Focus durch druecken eines Button verloren geht, koennte man ihn ja per Mausklick in das entsprechende Sudoku-Feld wieder auf den Hintergrund setzen und dann mit Tasten weiterarbeiten.
Hat das Menue (was man oben im Dialog einfuegt) eigentlich keinen Focus? Weil damit klappt es ohne Probleme.Dann werde ich wohl statt Buttons neben dem Spielfeld, oben im Menue alles einbauen.
Wie koennte man denn sonst mit der MFC so ein Sudoku gut realisieren? Lauter kleine Eingabefelder sind ja auch irgendwie bloed.
MfG, Tim :xmas2:
-
Nein das kannst ohne weitres nicht. Durch den Klick auf den Dialog Hintergrund übernimmt der Dialog eben nicht den Focus!
Nein! Hier läuft was ganz anderes. Wenn ein Dialog geöffnet wird läuft eine eigene Nachrichtenschleife und hier wird kein Focus umgesetzt!
-
Hej,
@Martin Richter:
Jetzt haben wir aneinadner vorbei geredet
Ich meinte nicht das der Hintergrund den Focus automatisch bekommt, sondern dass ich das in der LButtonDown Funktion selber machen koennte.Nochmal ne andere Frage, wie erstellt man eigentlich in den Dialogen unten diese Statusbalken, wo so Text drin steht? Bzw. da gibt es ja auch, meistens rechts unten, solche Felder die man sogar anklicken kann.
In Word sieht man da drinnen dann, ob bestimtme Sachen aktiviert sind.MfG, Tim :xmas1:
-
Heimdall83 schrieb:
Hej,
Nochmal ne andere Frage, wie erstellt man eigentlich in den Dialogen unten diese StatusbalkenStatusbar

Das kannst du mittels CreateWindowEx und der Klasse STATUSCLASSNAME erstellen.
Vorher nicht vergessen InitCommonControls(...) aufzurufen und die common control dll dazu zulinken.MfG schirrmie
-
Nein wir reden nicht aneinander vorbei! Und man kann nicht einfach ein LBUTTONDOWN selber machen! Diese nachrichten sind nicht dazu gedacht sie selber zu erzeugen. Zudem würde dies einen Button gehörig durcheinander bringen, denn der Capture wäre inkorrekt gesetzt.
-
Hej,
doch tun wir

Ich arbeite mit der MFC, also kann ich dort schon eine WM_LBUTTONDOWN Nachricht bearbeiten.
Habe nur im WinAPI gepostet, weil denke das sowas hier eher passt als im MFC.
Hatte in der MSDN schonmal SetFocus gefunden, aber das macht nicht das was ich mir vorstelle
Naja, werde es wie schon gesagt mit dem Menue loesen.
MfG, Tim