Page 1 of 1

'ON_CBN_SELCHANGE' : undeclared identifier

Posted: 04 Jun 2013, 16:14
by mesajflaviu
Am un combobox pe un dialog, si undeva codul urmator:

Code: Select all

void CMyDialog::OnButtonNext() 
{
	// TODO: Add your control notification handler code here

	int nIndex = m_Combo.GetCurSel();
	nIndex++;
	m_Combo.SetCurSel(nIndex);
	SendMessage(m_Combo.m_hWnd, ON_CBN_SELCHANGE, NULL, NULL);
}
dar cand incerc sa compilez codul, am urmatoarea eroare:

Code: Select all

error C2065: 'ON_CBN_SELCHANGE' : undeclared identifier
de ce ?
Acest mesaj este tratat undeva in dialog, totusi, acest mesaj nu-l recunoaste compilatorul ...

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Posted: 04 Jun 2013, 16:53
by Viorel
Notificarea se numește CBN_SELCHANGE și este emisă prin mesajul WM_COMMAND. Parametrii WPARAM și LPARAM sînt descriși în documentație.

Dacă mesajul este tratat de o funcție a dialogului, atunci apelează acea funcție direct.

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Posted: 04 Jun 2013, 17:32
by mesajflaviu
Am incercat asa:

Code: Select all

void CMyDialog::OnButtonNext() 
{
	// TODO: Add your control notification handler code here

	int nIndex = m_Combo.GetCurSel();
	nIndex++;
	m_Combo.SetCurSel(nIndex);
	SendMessage(WM_COMMAND, MAKEWPARAM(IDC_COMBO, CBN_SELCHANGE), (LPARAM)m_Combo.m_hWnd);
}
si pare ca functioneaza ... dar cred ca ma complic fara rost ...

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Posted: 04 Jun 2013, 20:10
by Ovidiu Cucu
Notificarile gen CBN_SELCHANGE se trimit de catre sistem printelui atunci cand userul ii face ceva copilului.
Deci, logic nu are sens sa le trimiti tu prin program.

Asa cum a sugerat si Viorel, daca ai cod comun si in handlerul unei notificari si undeva in alta parte, pune-l intr-o alta functie, separata.

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Posted: 05 Jun 2013, 16:43
by Marius Bancila
Pentru clarificare, ON_CBN_SELCHANGE e un macro din MFC care definiste in harta de mapari pentru clasa respectiva un handler pentru notificarea CBN_SELCHANGE.

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Posted: 04 Mar 2015, 10:19
by miekal33
ca functioneaza ... dar cred ca ma complic fara rost ..x c