C/Visual C - Clases con eventos

 
Vista:

Clases con eventos

Publicado por Christian A. Valeria Celedón (13 intervenciones) el 14/10/2000 00:00:00
Me gustaría saber lo siguiente: ¿es posible simular eventos en Turbo C++ 3.0 para DOS? Lo que quiero hacer es crear objetos tal como los ActiveX que provee Windows (botones, cuadros de texto, barras de progreso, etc.) y para eso necesito asignarle eventos que me indiquen cuando el usuario interactúa con los objetos, con el fin de programar la respuesta que se dará en tales casos.
Si esto es posible, me gustaría que me dieran una pequeña explicación o algo por donde partir para dedicarme a investigar.
De antemano muchas gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Clases con eventos

Publicado por Pedro Pablo (37 intervenciones) el 15/10/2000 00:00:00
En principio sí.
En C es posible definir punteros a funciones, por lo que es posible dar un puntero a una función a una clase para que la llame cuando lo necesite. Si no recuerdo mal es algo así como:

int (*f)(parametros);

con lo que se define el puntero f, que es en realidad el puntero a una función que devuelve un entero y tiene como parámetros los especificados. Luego, para llamarla, se hace igual que si fuera una función normal:

valor = f(...)

Gracias a esto, puedes crear clases que llamen a funciones cuando quieran avisar de algo... o sea que tienes eventos.

Hay, no obstante, dos problemas.
Las funciones de las que te he hablado son de C, no de C++, por lo que no se puede llamar a una función de un objeto. Para eso tendrías que pasar el objeto, y la función, y aun así seguramente tendrías bastantes problemas para llamar a la función (conozco a gente que lo ha hecho, pero utilizando ensamblador).
El otro problema es que para que salten eventos debería haber varios hilos de ejecución o alguna clase de interrupción por hardware.
En TC, el programa principal siempre está haciendo algo (aunque esté en un bucle infinito que no hace nada), y no hay ninguna otra parte del código que se ejecute, por lo que no hay forma de que nadie llame a las funciones de los eventos, pues, al fin y al cabo, no se ejecuta el código de los generadores de eventos.
Lo de los eventos en TC que yo conozco son para las librerías del ratón, por ejemplo, con botones y demás. En ese caso se tiene la interrupción del ratón, que interrumpe momentaneamente el programa y puede ejecutar otra parte del código que ya sí podría generar los eventos. De todas formas hay que tener mucho cuidado con todo esto...

Espero haberte ayudado...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar