C/Visual C - Interrupciones en VC++6

 
Vista:

Interrupciones en VC++6

Publicado por Horacio (3 intervenciones) el 15/07/2006 04:56:30
Se pueden manejar Interrupciones en VC++6?

Si se puede, como lo hago? donde empiezo a buscar?

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:Interrupciones en VC++6

Publicado por fernando.gomez (1603 intervenciones) el 17/07/2006 17:36:22
¿A qué te refieres con "interrupciones"? ¿A excepciones quizás?
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
sin imagen de perfil

RE:Interrupciones en VC++6

Publicado por Edgar Muñoz (14 intervenciones) el 17/07/2006 20:47:29
Una interrupción es un 'evento' de hardware interno o externo que causa que el contador de programa del procesador 'salte' hacia una determinada posición en la memoria de programa (llamada vector de interrupción). Este es un término muy utilizado cuando se programa en bajo nivel (assembler o lenguaje máquina).

Las interrupciones son gestionadas por el sistema operativo de manera que resulten transparentes al usuario. Por ejemplo la acción de pulsar una tecla o mover el mouse son en realidad 'detectadas' a través de interrupciones.

Sólo quería despejar algunas dudas que puedan existir en lo referente a interrupciones, la verdad no sé como utilizarlas en C++.
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

RE:Interrupciones en VC++6

Publicado por fernando.gomez (1603 intervenciones) el 17/07/2006 23:22:01
Pues entonces, si le entendí bien a Edgar, ¿lo que quieres son captar los eventos de dispositivos electrónicos?

Si es así, Windows provée una serie de mecanismos para hacer esto, que en el argot se le llaman mensajes de Windows. Así, un programa en Windows se inicia, crea la ventana y se queda a la espera de que Windows "avise" de la llegada de un mensaje para que este sea procesado. Por ejemplo, se envía el mensaje WM_LBUTTONDOWN cuando el usuario presionó el botón izquierdo del ratón, y WM_LBUTTONUP cuando se soltó el botón izquierdo. Ahora bien, Windows provée mensajes para otras miles de cosas además de "eventos" relacionados con el hardware, como el mensaje WM_CREATE que se lanza cuando se va a crear una ventana, WM_PAINT cuando se tiene que redibujar una ventana, o WM_ERASEBCKGND cuando se tiene que borrar el fondo de la misma.

Ahora bien, si el hardware es demasiado específico, es posible que no existan eventos de Windows para esto, por lo que -supongo yo- desde el driver que crees, tendrías que lanzar un "mensaje customizado", digamos:

#define WM_MIMENSAJE (WM_USER + 1)

a la ventana que esté activa.

Espero que eso sea a lo que te refieres. Si no, me avisas y pues le investigamos más.

Saludos.
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
sin imagen de perfil

RE:Interrupciones en VC++6

Publicado por Edgar Muñoz (14 intervenciones) el 18/07/2006 18:14:55
Los mensajes, como se denominan en este tipo de programación, son en su mayoría interpretaciones que hace el sistema operativo de las interrupciones que se producen en bajo nivel (me refiero a un nivel electrónico).

Con esto me refiero a que por ejemplo sería muy difícil gestionar el teclado si éste no tuviera una interrupción asociada. Los programadores que utilizan lenguages como C++ o Basic (de alto nivel por llamarlo de alguna forma) 'no se dan cuenta' de lo que realmente hace el sistema operativo para controlar el teclado (en realidad no necesitan saberlo), pero a la final se termina utilizando la interrupción asociada.

Ahora, la pregunta que hace Horacio es la de manejar de forma explícita una interrupción, es decir, que el programador sea el que genere el mensaje cuando se produzca un evento a nivel electrónico, sin ninguna intervención del sistema operativo.

Yo he manejado eventos en assembler y en lenguaje C en MSDOS pero no tengo idea de como se puede realizar en Windows.
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