CButton auswählen
-
Hallo,
ich wollte nach einer gewissen Zeit einen CButton-Knopf (im nachfolgenden Code m_buttonCancel genannt) aktivieren und ihm den Fokus geben, so dass der Benutzer mit Druck auf die Entertaste diesen Button betätigen kann. Hierzu nutze ich den Timer meines Dialogfensters.Leider scheint SetFocus() nicht auszureichen. Momentan ist es, nach dem der Timer abgelaufen ist, immer noch nötig, mit der Tab - Taste solange umzuschalten, bis der Button die Eingabe annimmt.
Wie löse ich dieses Problem?void CResultDlg::OnTimer(UINT nIDEvent){ m_sErgebnisText = "Zeit ist abgelaufen"; m_buttonCancel.EnableWindow(true); m_buttonCancel.SetFocus(); UpdateData(false); KillTimer(111); };Vielen Dank und freundliche Grüße
Hajo
edit:nur für die Suchfunktion (vielleicht hat jemand nach mir das selbe Problem):
button, focus, fokus, auswählen, automatisch, aktivieren
-
Nur ein Verdacht:
void CResultDlg::OnTimer(UINT nIDEvent){ m_sErgebnisText = "Zeit ist abgelaufen"; UpdateData(false); m_buttonCancel.EnableWindow(true); m_buttonCancel.SetFocus(); KillTimer(111); };
-
Hallo Estartu,
nein, damit hat es leider nichts zu tun. UpdateData () führt einen Datenaustausch von allen Steuerelemente mit den entsprechenden Datenvariablen durch - unabhängig vom Zeitpunkt, wenn die Variable den Inhalt bekommen hat.
(Natürlich hast du recht, dass zusammengehöriges auch zusammengeschrieben gehört. Allerdings gewöhnte ich es mir eben an, das update erst am Ende der Funktion durchzuführen, sofern dies möglich ist.)
Mein Problem bezieht auf die Methode, mit der ich einem Objekt den Focus übergeben kann, so dass er auch auf die Eingabetaste reagiert.
Gruß Hajo
-
Nimm dafür CDialog::GotoDlgCtrl. Wenn ich mich recht entsinne (ist eine Weile her) dann kannst du auch SetFocus weglassen.
-
das virtuelle Bier geht an dich, Nemesyzz!auch dir, estartu, ein herzliches Dankeschön für den Vorschlag