2009-05-15 10 views
0

Ich habe eine VC++ MFC-Dialoganwendung und in meiner OnTimer-Funktion versuche ich nur festzustellen, welche Schaltfläche in meinem Dialog gerade den Fokus hat. HierGet button focus - MFC

ist einig Pseudo-Code von dem, was ich zu tun versuche ....

CDialog::OnTimer() 
{ 
    CButton *btn = GetButtonOnFocus(); 
    int btnID = btn->GetDlgCtrlID(); 
} 

Antwort

2

ich nicht versucht haben, aber dies sollte funktionieren:

CWnd * pFocus = GetFocus(); 
int btnID = 0; 
if (pFocus != NULL && pDialog->IsChild(pFocus)) 
    btnID = pFocus->GetDlgCtrlID(); 

Dies wird nicht einschränken das Ergebnis nur für Schaltflächen - um dies zu tun, müssen Sie GetClassName verwenden und mit "button" vergleichen.

+0

Danke, das war genau das, was ich gesucht habe. Danke nochmal1 –

+0

Ich habe das selbe versucht, es funktioniert, aber der Knopfdruck funktioniert, wenn ich außerhalb des Knopfbereichs klicke (d. H. Der Knopf bleibt fokussiert). Irgendwelche Vorschläge, wie ich den Fokus töte, wenn ich aus meiner Region austrete? – Neophile

+0

@TheNewbie, ich bin mir nicht sicher, was Sie hier fragen. Vielleicht haben Sie mehr Glück, indem Sie eine neue Frage öffnen und einige Details hinzufügen, was Sie zu tun versuchen. –