Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Antares en 19 de Noviembre de 2002, 08:38:24 PM

Título: Mapas de mensajes
Publicado por: Antares en 19 de Noviembre de 2002, 08:38:24 PM
                                Enassss:

¿Como se invoca a una funcion de otra clase diferente a la clase desde la que se le invoca?

La funcion esta en la clase CReempView
Y la quiero invocar desde la clase CTreeMap derivada de CTreeCtrl.

Pensaba que era asi;
((CReempView *)GetParent()->ContarChequeados());
pero me da este error:
error C2039: 'ContarChequeados' : is not a member of 'CWnd'


Salud2

//////////////////////////////////////////////////////////////////////

Detalles:

Tengo un libro que un buen amigo mio me dejo y pone que para implementar el mapa de mensajes de la ventana padre debo hacer una clase derivada de la clase del control al que quiero añadirle el mapa de mensajes.

Lo cuenta muy bien y muy detalladamente pero al empezar el primer paso (derivar una clase de la clase del control y meterla en el xxxView.cpp y xxxView.h usando un formulario como vista principal) resulta que me da este aviso    "The files (ReempView.h, ReempView.cpp) for the new class CTreeMapa contain remans of that class"    y no me deja crearla dentro del xxxView.

He eliminado todas las las funciones (pq lo q entiendo es que los archivos xxxView contienen restos de la clase CTreeCtrl) y me sigue pasando lo mismo amenos que borre todo en cuyo caso si me escribe el codigo de la nueva clase en el archivo xxxView.

asi q he cortado el codigo, he declarado la clase, he pegado el codigo y he ordenado el codigo de la nueva clase antes de la declaracion de la clase CReempView. he eliminado el antiguo objeto miembro m_CtrlLista y he creado uno nuevo con el mismo nombre pero con tipo de variable" de la nueva clase. Y funciona cuando hay un evento que antes no podia procesar se procesa en la nueva clase CTreeMapa pero si llamo asi...
((CReempView *)GetParent()->ContarChequeados());
...a la funcion que quiero que se ejecute cuando pasa el evento me da este error:
error C2039: 'ContarChequeados' : is not a member of 'CWnd'

¿Como llamo a la funcion de otra clase?

Me queda decir que la funcion esta declarada asi:
void ContarChqueados();
en ReempView.h

GRACIAS.                                
Título: Mapas de mensajes
Publicado por: fiero en 20 de Noviembre de 2002, 01:27:24 AM
                                Hola, no sé si te habrás confundido al copiar, pero para decirle que el puntero es (CReempView *) el paréntesis se pone antes de ->

((CReempView *)GetParent())->ContarChequeados();

Yo a veces he tenido que hacer varios GetParent() seguidos para acceder a funciones de las clases padre, aunque no sé si es tu caso, por probar, por ejemplo:

((CReempView *)GetParent()->GetParent())->ContarChequeados();


De todas formas cuando me lea más detenidamente tu post espero contestar,... es que no lo he entendido... hoy estoy espeso. :oops:

saludos                                
Título: pues si que era eso
Publicado por: Antares en 20 de Noviembre de 2002, 10:57:36 PM
                                :oops: vaya, vaya, vaya.

Use cortar y pegar para poner esa linea y no se q paso con el parentesis. Por eso no dudaba de su correcta construccion. En fin... una leccion mas.

Hice bien en postear los detalles por parte....


Asi si es una chorrada se contesta facil, pero si requiere un conocimiento mas profundo del problema pos ahi estan los detalles.

Y no me estraña que no entendieras mi post (Supongo que te refieres a los detalles) pq si no lo hubiera escrito yo, tampoco menteraria de ná.

Ahora comprendo porq el lenguaje de los libros de programacion es tan liante... pq cuanto mas claro lo intetas dejar mas liado se queda.

Gracias otra vez.