es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El cuadro de diálogo MFC no pudo cargar correctamente IDR_MAINFRAME.

Mi proyecto (basado en diálogos) anteriormente configurado como 32 bits. Ahora lo configuro como una aplicación de 64 bits.
Pero la aplicación falta tanto en el diálogo principal como en el diálogo Acerca de.

Cuando depuro puedo ver que m_hIcon era NULL después de esta línea en el constructor del diálogo principal:

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

Intenté llamar a GetLastError, pero devolvió 0. Incluso intenté:

m_hIcon = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
auto lastError = GetLastError();

Desafortunadamente, el lastError también era 0.

La aplicación utiliza WinSparkle, y la ventana de salida de VC2019 muestra:

Excepción de C++ de Microsoft: winsparkle::Win32Exception en la ubicación de la memoria
0x000000800836E408. WinSparkle: el ejecutable no tiene el recurso VERSIONINFO requerido: el archivo de imagen especificado no contenía una
sección de recursos. Excepción lanzada en 0x00007FF9F0204F99 en
XXXX.exe: Excepción de C++ de Microsoft: winsparkle::Win32Exception en
la ubicación de la memoria 0x000000800836DF18. WinSparkle: el
ejecutable no tiene el recurso VERSIONINFO requerido: el archivo de
imagen especificado no contenía una sección de recursos.

Mis preguntas son:
1. ¿Qué podría hacer para solucionar la falta del icono de la aplicación?
2. ¿Por qué GetLastError devuelve 0? ¿Cómo puedo encontrar qué está sucediendo en el fondo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    ¿Cuál podría ser la causa de la excepción de WinSparkle?

    Respuestas:

    Para solucionar la falta de icono de la aplicación, podría intentar agregar el recurso del icono a la aplicación. Puede hacer esto haciendo clic derecho en el proyecto en el Explorador de soluciones, seleccionando Propiedades y luego seleccionando la pestaña de Recursos. Desde allí, puede agregar el recurso del icono a la aplicación.
    GetLastError devuelve 0 porque no hay ningún error. Es una función que devuelve el último código de error establecido por una llamada a la API. Si no ha ocurrido ningún error, devolverá 0. Para descubrir qué está sucediendo debajo, puede utilizar un depurador para paso a paso e ir viendo qué está ocurriendo.
    La causa de la excepción de WinSparkle podría ser que la aplicación no tenga el recurso de información de la versión requerido. Este recurso es necesario para que WinSparkle funcione correctamente. Para solucionarlo, puede agregar el recurso de información de la versión a la aplicación.

Comments are closed.