zoukankan      html  css  js  c++  java
  • sampleviewer add menu item error 'assert'

    可以跟踪到 mfc提供的源代码内部,(注:如果打开了mfc源代码,设置了断点,但是跟不进去,那就需要更新PDB文件,具体网上搜)
    打开 wincore.cpp文件(D:Program FilesMicrosoft Visual Studio .NET 2003Vc7atlmfcsrcmfc)。查看 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分啊,还有不明白的问我吧,一定要把分给我
  • 相关阅读:
    progresql
    postgresql
    postgresql
    postgresql 索引
    postgresql 视图
    postgresql 触发器
    postgresql异常快速定位
    postgresql数据库备份和恢复
    amgular $q用法
    安装fcitx
  • 原文地址:https://www.cnblogs.com/gosteps/p/3331997.html
Copyright © 2011-2022 走看看