¿Cómo deshabilitar el cierre automático de una aplicación MFC basada en diálogo en Visual Studio?

Cuando inicio el programa, obtengo el diálogo y todo. Pero se cierra solo después de unos 10 segundos. ¿Cómo deshabilito eso?

EDITAR: Esto sucede cuando ejecuto "Depurar -> Iniciar sin depurar". Esta es la única forma que conozco de ejecutar el programa.

EDIT2: Mi diálogo se hereda de CDialogEx.

preguntado el 12 de junio de 12 a las 10:06

Hay algo en tu código que hace que se cierre. No hay manera de "deshabilitarlo". Tienes que arreglar tu error. Quiero decir, "cerrar automáticamente después de N segundos" no es una característica estándar de una aplicación MFC basada en diálogo, y no hay una marca o estilo para habilitarla o deshabilitarla. -

Sí lo es. Cuando crea una nueva aplicación basada en cuadros de diálogo en Visual Studio y ejecuta "Depurar -> Iniciar sin depurar", se cierra sola como describí. -

Nunca he visto que eso suceda, y he usado VS6, 2003, 2005 y 2008. Estoy bastante seguro de que tampoco sucede en VS2010 o 2012, pero no puedo estar 100% seguro. De todos modos, acabo de hacer una aplicación de prueba y presioné "iniciar sin depurar", y ¿sabes qué? No se cierra. Entonces tienes algo que lo hace cerrar. Puede ser un error en el código, problemas de configuración, problemas con su sistema operativo, alguna otra aplicación que lo cierre... Pero las aplicaciones MFC no se cierran solas. -

Apoyaré la afirmación de @MikMik. Esta no es una característica de Visual Studio o MFC. Si su programa se cierra después de diez segundos y no lo ha codificado para que lo haga, tiene un error en alguna parte que hace que se bloquee después de ese tiempo. -

5 Respuestas

Si su cuadro de diálogo no es modal, es decir, no lo activa con la función miembro DoModal(), es posible que se cree con el constructor y se elimine con el destructor a medida que sale del alcance. Verá este tipo de comportamiento con algunas implementaciones de pantallas de inicio. Para averiguar qué está sucediendo, coloque un punto de interrupción en su destructor de diálogos y observe la pila de llamadas que conduce a él. También vale la pena activar todas las excepciones en el depurador, ya que podría recibir una excepción no detectada que está terminando su aplicación.

Como ya han dicho otros, este no es un comportamiento normal para una aplicación MFC.

Respondido el 12 de junio de 12 a las 11:06

Por lo general, los diálogos no se comportan de esa manera.

Pero por defecto, se cierran en OnOk (CDialog::OnOk) que es "Tecla Enter Presionada" y OnCancel (CDialog::OnCancel()) que es "Tecla Esc Presionada"

Intente sobrecargar esos dos en su Diálogo, para ver si se les llama y para manejar el comportamiento allí como lo desee.

Tal vez el evento Cerrar también deba controlarse o observarse.

aquí hay muchos ejemplos de lo que se puede hacer con un diálogo (especialmente OnOk, OnCancel y Close) Ejemplos de diálogo CD

Respondido el 12 de junio de 12 a las 11:06

Estaba enfrentando el mismo problema con Visual Studio 2013:

Estaba creando la aplicación MFC más básica con el asistente de Visual Studio (ya sea basado en diálogos, basado en documentos únicos/múltiples) y simplemente volviendo a compilar el código generado. Ninguna modificación al código en absoluto.

yo solo descubierto que el "reinicio" no se da cuando yo apague mi Anti-virus. :-) Esto no es un error en Visual Studio, es un problema del entorno.

mi antivirus es Avast.

La solución para Avast es desactivar la función Deepscreen.

Allí, vaya a Configuración / Protección activa / Pantalla profunda - y inhabilitar ese.

Se pueden encontrar más detalles sobre este enfoque de la solución en los foros de Avast, a partir de esta discusión: https://forum.avast.com/index.php?topic=139935.0

respondido 11 nov., 14:19

Confirmado, esto sucede con Visual Studio 2010 y no sucede con Visual Studio 2008. Eso significa que todos los votos negativos fueron completamente innecesarios. Es un valor predeterminado de Visual Studio 2010, no cambié nada. Tampoco cometí ningún error, porque dije explícitamente que creé una nueva aplicación sin cambiar nada.

Gracias por todos los votos negativos.

Respondido el 17 de junio de 12 a las 13:06

No pudo identificar el problema y proporcionó una respuesta incorrecta culpando a Visual Studio por un comportamiento inesperado. La razón real es un error en el código. - romano r

Tenga en cuenta que nadie confirmó que no suceda en VS 2010. El comentarista de la publicación original dijo que no lo intentó en 2010. - Janko-m

@ janko-m Confirmé que no sucede con Visual Studio 2010. Como todos los demás señalaron, esto no parece ser un problema con Visual Studio. Lo más probable es que haya un problema con la configuración particular que está usando matija (alguna herramienta de "productividad" que se ejecuta en segundo plano, entorno de compilación desactualizado/mal configurado, reemplazó la plantilla de proyecto MFC predeterminada con una "proxeneta", instalación de VS encima de una instalación de vista previa sin primero desinstalarlo, etc.) - Inspeccionable

Solo para que conste, probé esto usando Visual Studio 2010. Elegí la aplicación basada en Dialog y dejé todas las demás opciones en su configuración predeterminada. Configuraciones compiladas de depuración y lanzamiento, para x86 y x64. Cuando se inicia con Iniciar sin depurar, ninguno de los cuatro ejecutables termina por sí solo.

Si esto le sucede, supongo que tiene alguna aplicación ejecutándose (en segundo plano) que interfiere con el comportamiento esperado. Intente configurar una máquina virtual, instale un Visual Studio limpio y realice el mismo procedimiento nuevamente.

Respondido el 16 de diciembre de 12 a las 14:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.