2009-05-15 7 views
0

J'ai une application de dialogue VC++ MFC et dans ma fonction OnTimer j'essaie juste de déterminer quel bouton dans ma boîte de dialogue a actuellement le focus.Get bouton focus - MFC

Voici quelques pseudocode de ce que je suis en train d'accomplir ....

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

Répondre

2

Je ne l'ai pas essayé, mais cela devrait fonctionner:

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

Cela ne limite pas le résultat aux boutons seulement - pour ce faire, vous devez utiliser GetClassName et comparer au "bouton".

+0

Merci, c'était exactement ce que je cherchais. Merci encore1 –

+0

J'ai essayé la même chose, ça fonctionne mais la pression du bouton fonctionne si je clique en dehors de la zone du bouton (c'est-à-dire que le bouton reste focalisé). Des suggestions sur la façon dont je tue le focus quand je sors de sa région? – Neophile

+0

@TheNewbie, je ne suis pas sûr de ce que vous demandez ici. Vous pourriez avoir plus de chance en ouvrant une nouvelle question et en ajoutant quelques détails sur ce que vous essayez de faire. –