當前位置:編程學習大全網 - 編程軟體 - Debug Assertion Failed! 我用VC++編程,運行時點擊菜單選項報錯。

Debug Assertion Failed! 我用VC++編程,運行時點擊菜單選項報錯。

可以跟蹤到 mfc提供的源代碼內部,(註:如果打開了mfc源代碼,設置了斷點,但是跟不進去,那就需要更新PDB文件,具體網上搜)

打開 wincore.cpp文件(D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc)。查看 312 行,所在函數如下:

CWnd* PASCAL CWnd::FromHandle(HWND hWnd)

{

CHandleMap* pMap = afxMapHWND(TRUE); //create map if not exist

ASSERT(pMap != NULL);

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

#ifndef _AFX_NO_OCC_SUPPORT

pWnd->AttachControlSite(pMap);

#endif

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

return pWnd;

}

斷言就是 Assert( pWnd == NULL || pWnd->m_hwnd == hWnd );也就是讀取句柄映射表錯誤,有2種可能:

1妳傳入的窗口句柄為空,也就是生成了窗口對象但是沒有使用 Create創建窗口。

2.窗口所在線程不是當前所在線程,那麽使用FromHandle讀取映射窗口指針或者映射臨時窗口指針必然會出錯。窗口都是線程相關的噢

妳點擊菜單命令出錯,妳就有可能妳的菜單命令執行的代碼有 FromHandle語句,妳看看,壹定就是它

200分啊,還有不明白的問我吧,壹定要把分給我

  • 上一篇:編程語言的定義都涉及什麽語義和語用三個方面
  • 下一篇:請問馬紮克200,怎麽對刀,會的大哥能教教我嗎?跪謝
  • copyright 2024編程學習大全網