'ON_CBN_SELCHANGE' : undeclared identifier

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

'ON_CBN_SELCHANGE' : undeclared identifier

Post by mesajflaviu » 04 Jun 2013, 16:14

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 ...



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

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Post by Viorel » 04 Jun 2013, 16:53

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.

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

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Post by mesajflaviu » 04 Jun 2013, 17:32

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 ...

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Post by Ovidiu Cucu » 04 Jun 2013, 20:10

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.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Post by Marius Bancila » 05 Jun 2013, 16:43

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.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

miekal33
Junior
Junior
Posts: 1
Joined: 04 Mar 2015, 10:12
Judet: Bacău

Re: 'ON_CBN_SELCHANGE' : undeclared identifier

Post by miekal33 » 04 Mar 2015, 10:19

ca functioneaza ... dar cred ca ma complic fara rost ..x c
asad

Post Reply