Red de conocimiento informático - Problemas con los teléfonos móviles - biblioteca de depuración de Visual C++ Encuentro los siguientes problemas al programar y ejecutar ¿Por qué sucede esto y cómo solucionarlo?

biblioteca de depuración de Visual C++ Encuentro los siguientes problemas al programar y ejecutar ¿Por qué sucede esto y cómo solucionarlo?

La razón por la que aparece "Error de aserción de depuración fallida" es que la aserción en su programa falló, que es esta oración:

ASSERT(pActivateView == this);

Assert es estático método de la clase System.Diagnostics.Debug Solo funciona en el estado de depuración. Si está en el estado de depuración, el código se ignorará. Método estático de la clase .Diagnostics.Debug, solo funciona en estado de depuración; si el programa se compila para su lanzamiento, el código se ignorará.

La función de Assert es comprobar si la condición de entrada (es decir, el parámetro del método) es "Verdadero". Si es "Verdadero", no pasará nada. Si es "Falso". , se lanzará una excepción.

Según el código que me diste, parece que el parámetro pActivateView que le pasaste no es la misma referencia (es decir, no apunta a la misma instancia) que la instancia de la clase (representada por esto) que llama al método Assert. Puede verificar nuevamente si su código se puede rastrear en el código fuente proporcionado por mfc (Nota: si abre el código fuente de mfc y establece puntos de interrupción, pero no puede rastrearlo, debe actualizar el archivo PDB, busque en línea)

Abra el archivo wincore.cpp (D:\Program Files\Microsoft Visual Studio .NET 2003\Vccp). .NET 2003Vc7\atlmfc\src\mfc). Mire la línea 312, la función es la siguiente:

CWnd* PASCAL CWnd::FromHandle(HWND hWnd)

{

CHandleMap* pMap = afxMapHWND (TRUE) ; //crear mapa si no existe

ASSERT(pMap != NULL

CWnd* pWnd = (CWnd*)pMap->FromHandle(hWnd); /p>

#ifndef _AFX_NO_OCC_SUPPORT

pWnd->AttachControlSite(pMap);

#endif

ASSERT(pWnd == NULL ||| pWnd-> m_hWnd == hWnd);

return pWnd;

}

La afirmación es Assert( pWnd == NULL || pWnd->m_ hwnd = = hWnd ); Es decir, hay un error al leer la tabla de asignación de identificadores. Hay dos posibilidades:

1 El identificador de ventana que pasó está vacío, es decir, se ha generado el objeto de ventana. pero Crear no se ha utilizado para crear la ventana.

2. El hilo donde se encuentra la ventana no es el hilo actual, por lo que definitivamente es incorrecto usar FromHandle para leer el puntero de la ventana mapeada o mapear el puntero de la ventana temporal. La ventana está relacionada con el hilo

Cuando hace clic en el comando de menú, hay un error. Puede ser que haya una declaración FromHandle en el código de ejecución del comando de menú. Eche un vistazo, debe ser así.