Punteros a funciones en Visual C++
Publicado por luis (17 intervenciones) el 15/01/2001 00:00:00
Agradecería de antemano cualquier tipo de ayuda.
PROBLEMA: ¿Como se pasa un puntero a una función entre clases diferentes?
CASO A RESOLVER: He derivado una clase de CButton ("CMiBoton") declarando en el fichero de cabecera ("MiBoton.h") un puntero a una función "genérica" ("void (Pulsar*)()"). Es decir:
// MiBoton.h
class CMiBoton : public CButton
{
...
void (Pulsar*)();
...
afx_msg void OnClick();
}
// MiBoton.cpp
void CMiBoton::OnClick()
{
(*Pulsar)();
}
La implementación de esta función ("Pulsar") se lleva a cabo en la ventana padre que contiene dicho botón ("CMiVentana") derivada de CDialog. Es decir:
// MiVentana.h
#include "MiBoton.h"
class CMiVentana : public CDialog
{
CMiBoton boton1;
CMiBoton boton2;
...
void Pulsar1();
void Pulsar2();
}
// MiVentana.cpp
void CMiVentana::Pulsar1()
{
MessageBox("Pulsó botón 1");
}
void CMiVentana::Pulsar2()
{
MessageBox("Pulsó botón 2");
}
A RESOLVER: ¿Cómo hago para desde la ventana padre ("CMiVentana") en "OnInitDialog" asignar a cada botón miembro su función correspondiente? Es decir, cuando pulse "botón1" ha de visualizarse "Pulsó botón 1" y lo mismo con botón 2, "Pulsó botón 2".
RESUMIENDO: QUIERO IMPLEMENTAR DICHO CODIGO DESDE LA VENTANA PADRE ¡¡¡OBLIGATORIAMENTE!!! ¿COMO LO HAGO?
Gracias por llegar has
PROBLEMA: ¿Como se pasa un puntero a una función entre clases diferentes?
CASO A RESOLVER: He derivado una clase de CButton ("CMiBoton") declarando en el fichero de cabecera ("MiBoton.h") un puntero a una función "genérica" ("void (Pulsar*)()"). Es decir:
// MiBoton.h
class CMiBoton : public CButton
{
...
void (Pulsar*)();
...
afx_msg void OnClick();
}
// MiBoton.cpp
void CMiBoton::OnClick()
{
(*Pulsar)();
}
La implementación de esta función ("Pulsar") se lleva a cabo en la ventana padre que contiene dicho botón ("CMiVentana") derivada de CDialog. Es decir:
// MiVentana.h
#include "MiBoton.h"
class CMiVentana : public CDialog
{
CMiBoton boton1;
CMiBoton boton2;
...
void Pulsar1();
void Pulsar2();
}
// MiVentana.cpp
void CMiVentana::Pulsar1()
{
MessageBox("Pulsó botón 1");
}
void CMiVentana::Pulsar2()
{
MessageBox("Pulsó botón 2");
}
A RESOLVER: ¿Cómo hago para desde la ventana padre ("CMiVentana") en "OnInitDialog" asignar a cada botón miembro su función correspondiente? Es decir, cuando pulse "botón1" ha de visualizarse "Pulsó botón 1" y lo mismo con botón 2, "Pulsó botón 2".
RESUMIENDO: QUIERO IMPLEMENTAR DICHO CODIGO DESDE LA VENTANA PADRE ¡¡¡OBLIGATORIAMENTE!!! ¿COMO LO HAGO?
Gracias por llegar has
Valora esta pregunta


0