[PC] Avanzano en C

1
¿como puedo hacer para que se abra otra ventana exactamente igual a la que estoy programando al pulsar por ejemplo la tecla b?


2
¿como puedo hacer para que al puksar la x de la ventanta en lugar de cerrar el programa haga otra cosa, por ejemplo mostrar en patalla un frase?

Gracias ;)
[quote="jixo"]
Este foro está dedicado al desarrollo de sofware casero (aplicaciones y juegos) para videoconsolas[QUOTE]

esto es... la primera frase de las normas...

bueno aún así... depende mucho de lo que estes utilizando, yo por ejemplo cuando programo en windows CE ( algo parecido a la vieja api de windows) se trata de pillar el mensaje de cerrar la ventana y procesarlo yo mismo.

Tambien he trabajado en qt y ahí es mucho más fácil ya que simplemente has de cambiar la callback del formulario OnClose() y le pones otra cosa.
y que te hace pensar que no es software casero?

edito: pero no hay ninguna funcion o fragmento de codigo?
no es por lo de software casero... es por lo de consolas... por cierto no es de mal royo solo me gusta recordar las normas pero si puedo tambien ayudo.

a ver dime que estás gastando para programar, la api de windows, ventanas SDL o qt? fluid? gtk? si no lo sé es dificil ayudarte
ok perdona, el bloodshed dev c++ pero programo en c bajo windows xp
No se como va ese entorno ¿Dibujas las ventanas o las programas a pelo? Si es lo primero posiblemente exista una opción para linkar una función a la acción de pulsar la X, si es la segunda tienes que pillar el mensaje en la función de procesamiento de mensajes (que no se cual sera, imagino que el WM_DESTROY) y en vez de tratarlo con el típico PostQuitMessage( 0 ) hacer lo que quieras.

No pidas nunca una "funcion o fragmento de codigo", eso son sintomas de haber aprendido en 4 tutoriales (que no digo que tu lo hayas hecho así). Pide una explicación y cuando sepas por donde van los tiros mas o menos buscate la vida para codificar lo que necesites.
a pelo

"tienes que pillar el mensaje en la función de procesamiento de mensajes "

ni idea de como se hace :S
Si haces la ventana a pelo habras tenido que declarar una funcion callback que se llamara (muy posiblemente) MsgProc en la que tienes un switch con cada mensaje que quieres tratar ¿No?. Pues ahí el WM_DESTROY lo tendras con un típico "PostQuitMessage(0); return 0;" que lo que hace es enviar a la ventana el mensaje de cerrar. Bien, pues sustituye ese código por lo que tu quieras y listo.
no, quiero decir que no es como vb, la ventana me sale igual que cuando ejecutas cmd, la barrita azul arriba y el resto negro con letras en blanco, o sea la x ya esta
Ah coño, estas programando en modo consola. Pues si es así diría que no puedes ya que esa ventana no es de la aplicación y no la gestionas tu.

Lo único que se me ocurre es buscar alguna función de la winapi que te retorne las ventanas que esten abiertas, buscar (no se como) el identificador de la ventana de la consola e interceptar (no se como) el mensaje destroy de esa ventana. Diría que es imposible.
kbks escribió:Ah coño, estas programando en modo consola. Pues si es así diría que no puedes ya que esa ventana no es de la aplicación y no la gestionas tu.

Lo único que se me ocurre es buscar alguna función de la winapi que te retorne las ventanas que esten abiertas, buscar (no se como) el identificador de la ventana de la consola e interceptar (no se como) el mensaje destroy de esa ventana. Diría que es imposible.


y que me dices de la primera pregunta?


gracias de todas formas ;)
supongo que la ventana cuando se cierra enviará un mensaje ( no estoy muy puesto en la programción de windows pero la teoría sería algo así ) seguramente podrás interceptarlo de windows aunque como dice kbks esa ventana la está creando el sistema operativo así que tendrás que intentar interceptar sus mensajes y eso si lo que quieres es que una aplicación no se pueda cerrar al chapar la ventana si la ventana que haces es tuya.
tendre que dejarle para cuando haya avanzado mas :S
N2eiDer escribió:tendre que dejarle para cuando haya avanzado mas :S
No tiene nada que ver con avanzar mas en C, solo es conocer la WinAPI. Cuando necesites hacer cosas con ventanas te tienes que olvidar de la programación en modo consola, en la que practicamente solamente tienes control sobre el cursor de la consola.

Tu primera pregunta es mas de lo mismo, para crear otra ventana necesitas usar la WinAPI.
pues no tengo ni idea de que es WinApi :S
la winapi es el api de windows para crear ventanas y gestionarlas es decir se encarga tambien del paso de mensajes y toda la pesca. A mi me parece un poco espartana la winApi y con una sintaxis muy asquerosa pero para gustos los colores lo bueno es que la puedes adaptar bien con objetos y se puede manejar...

en esta web te enseñan algo de la winAPI
http://winapi.conclase.net/curso/index.php

PD: Intenta ceñirte en programación para consolas en este foro
15 respuestas