Foros del Web » Programación para mayores de 30 ;) » C/C++ »

funcion al cerrar el programa

Estas en el tema de funcion al cerrar el programa en el foro de C/C++ en Foros del Web. Estimados estoy trabajando en un pequeñito juego de rol, necesito que cuando un jugador que YA esta online, y este salga arranque una función que ...
  #1 (permalink)  
Antiguo 14/02/2016, 14:28
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
funcion al cerrar el programa

Estimados estoy trabajando en un pequeñito juego de rol, necesito que cuando un jugador que YA esta online, y este salga arranque una función que me diga que se ha desconectado

Se que si el apreta el boton logout correctamente iniciará la funcion correcta de salida, pero si apreta la X para cerrar el programa, ahi el problema, alguna solución?
  #2 (permalink)  
Antiguo 14/02/2016, 15:06
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: funcion al cerrar el programa

¿Estás usando Qt, Windows Forms, C++ nativo sobre Windows, C++ nativo sobre Linux/POSIX? Dependiendo de la plataforma o si tienes un framework que lo maneja la respuesta es diferente.
  #3 (permalink)  
Antiguo 14/02/2016, 15:27
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: funcion al cerrar el programa

disculpa se me fue esos datos importantes...


c++ nativo windows.
  #4 (permalink)  
Antiguo 14/02/2016, 16:27
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: funcion al cerrar el programa

Yo personalmente no me peleo mucho con Windows nativo, probablemente alguien te pueda ayudar mejor que yo. No obstante, el proceso la intención de cerrar la ventana viene dada por WM_CLOSE. Está señal es por ejemplo lanzada por pulsar el botón cerrar o ALT + F4.

Si haces un manejador de señales de la ventana (WNDPROC) que se aproveche de ello puedes hacer que al recibir WM_CLOSE tenga lugar el proceso de desconexión y una vez finalizado se llame a destroyWindow para que realmente se cierrre la ventana.

Quizás esto te sea de ayuda (en inglés):
http://www.functionx.com/win32/Lesson05.htm
  #5 (permalink)  
Antiguo 15/02/2016, 02:25
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: funcion al cerrar el programa

Yo en tu lugar no dejaría únicamente en manos del cliente avisar de su desconexión... ¿Qué sucedería entonces si hay un problema de red o se va la luz en cada del cliente?

Si para el juego usas TCP puedes saber en todo momento si el cliente se ha desconectado. TCP es un protocolo orientado a la conexión y ello implica que el enlace se mantiene abierto todo el tiempo. Puedes conseguir el mismo efecto con UDP... en este caso el cliente tendría que enviar mensajes cada, como mucho, X tiempo. Si un jugador pasa más de ese X sin enviar mensajes se le desconecta y listo.

Para gestionar la desconexión desde el lado del cliente tienes que aplicar una solución que es dependiente de la librería que uses para construir la interfaz gráfica. Como te ha indicado xKuZz, en Windows el proceso recibe un mensaje de tipo WM_CLOSE cuando la ventana va a cerrarse... pero las librerías gráficas suelen encapsular esta funcionalidad y tienden a ofrecerte una interfaz más amigable. Por supuesto dicho mensaje SIEMPRE debería estar disponible pero vas a conseguir un código más sencillo si apuestas por aprovechar las bondades de la interfaz gráfica que estés utilizando.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: cerrar, funcion, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:23.