Problema GetFocus()

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Problema GetFocus()

Post by mesajflaviu » 20 Jul 2010, 15:22

Am un CMyView bazat pe CFormView , care are pe el mai multe controale de tip edit , combobox , etc.Vreau sa testez la apasarea tastei Escape ( ca accelerator ) daca focusul este pe un anume combobox :

Code: Select all

void CMyView::OnAccelEscape()
{
	// TODO: Add your command handler code here

	if(GetFocus()->GetDlgCtrlID() != IDC_COMBO_TEST)
	{
		GetDlgItem(IDC_COMBO_TEST)->SetFocus();
		return;
	}

	theApp.CloseAllDocuments(NULL);
}
desi focusul se afla pe combox-ul cu pricina , codul zice ca nu ... mai mult , am testat ID controului pe care se afla focusul la un moment dat :

Code: Select all

void CMyView::OnAccelEscape()
{
	// TODO: Add your command handler code here
TRACE1("\n %d \n",GetFocus()->GetDlgCtrlID());
	if(GetFocus()->GetDlgCtrlID() != IDC_COMBO_TEST)
	{
		GetDlgItem(IDC_COMBO_TEST)->SetFocus();
		return;
	}

	theApp.CloseAllDocuments(NULL);
}
cand focusul se afla pe orice combobox , trace-ul imi arata intotdeauna aceeasi cifra ( 1001 ) , iar cand focusul se afla pe orice alt control ( edit , de exemplu ) , trace-ul imi arata ID-ul corespunzator ... de ce ? Am incercat sa compar pointeri de tip CComboBox , dar are aceeasi comportare ... cum pot afla in mod sigur pe ce control am focusul ?

Am mai incercat si in felul urmator , dar cu aceleasi rezultate :

Code: Select all

void CMyView::OnAccelEscape()
{
	// TODO: Add your command handler code here

	if(GetFocus() != GetCtrlItem(IDC_COMBO_TEST))
	{
		GetDlgItem(IDC_COMBO_TEST)->SetFocus();
		return;
	}

	theApp.CloseAllDocuments(NULL);
}



Viorel
Microsoft MVP
Microsoft MVP
Posts: 293
Joined: 13 Jul 2007, 12:26

Re: Problema GetFocus()

Post by Viorel » 20 Jul 2010, 15:31

Încearcă ’GetFocus()->GetParent()->GetDlgCtrlId()’.

mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Problema GetFocus()

Post by mesajflaviu » 20 Jul 2010, 16:10

Viorel wrote:Încearcă ’GetFocus()->GetParent()->GetDlgCtrlId()’.
Interesant ... functioneaza acum ... daca focusul se afla pe acel combobox , acel apel al metodei GetFocus() era al obiectului ID_COMBO_TEST ...

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Problema GetFocus()

Post by cristianamarie » 20 Jul 2010, 16:39

E posibil ca focusul real sa fie in editbox-ul combo-ului?
Nuclear launch detected

Post Reply