Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


error C2440: al declarar un nuevo mensaje

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

error C2440: al declarar un nuevo mensaje

Notapor KORYO22 el Dom Dic 30, 2007 7:35 am

Hola!

Estoy intentando declarar un nuevo mensaje en una clase que hereda de CWinThread con el siguiente código:

.h _____________________________________________

#define UWM_ONFUNC WM_APP+2
class CThreadAvanzado : public CWinThread
{
[...]
protected:

afx_msg LRESULT OnFunc(WPARAM /*wparam*/, LPARAM /*lparam*/);
_____________________________________________

.cpp ___________________________________________

BEGIN_MESSAGE_MAP(CThreadAvanzado, CWinThread)
ON_MESSAGE(UWM_ONFUNC, OnFunc) // <----- ERROR
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

IMPLEMENT_DYNCREATE(CThreadAvanzado, CWinThread)

LRESULT CThreadAvanzado::OnFunc(WPARAM wparam, LPARAM lparam)
{return 0;}
________________________________________________

He visto que a la hora de mandar messages hay que tener mucho cuidado a la hora de declarar... creo que lo estoy poniendo correctamente pero siempre me sale el error:

error C2440: 'static_cast' : no se puede realizar la conversión de 'LRESULT (__thiscall CThreadAvanzado::* )(WPARAM,LPARAM)' a 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
1> Ninguna de las funciones con este nombre en el ámbito coincide con el tipo de destino


Espero que alguien pueda echarme una mano!

Muchas gracias!!!! :lol:
KORYO22
Novato
Novato
 
Mensajes: 2
Registrado: Dom Dic 30, 2007 7:23 am

Re: error C2440: al declarar un nuevo mensaje

Notapor ivancp el Jue Ene 03, 2008 10:59 am

Lo que sucede es que la macro ON_MESSAGE debe ser declarada dentro de una clase derivada de CWnd, Tu clase es derivada de CWindThread.

Lo que puedes hacer es utilizar la macro de notificacion ON_COMMAND.

Código: Seleccionar todo
ON_COMMAND(ID_TUIDPARAGENERAREVENTO, OnEvento)


Para generar ese evento desde cualquier parte de la clase derivada de CWinThread tienes que hacer:

Código: Seleccionar todo
PostMessage(WM_COMMAND,ID_TUIDPARAGENERAREVENTO);
ivancp
Programador Experimentado
Programador Experimentado
 
Mensajes: 350
Registrado: Jue Sep 06, 2007 12:57 pm


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados