bearweman1
bearweman1
采纳率0%
2017-03-27 01:57

release C++ MFC 触发刷新消息死机

错误情况1:

kernel32.dll!7c812fd3()

[下面的框架可能不正确和/或缺失,没有为 kernel32.dll 加载符号]
T5CAPP14.exe!CTH_PIMSBaseDoc::UpdateAllViewsEx(CView * pSender=0x00000000, long lHint=0, CObject * pHint=0x00000000) 行76 C++
T5CAPP14.exe!CTH_PIMSMngTreeView::OnSelchanged(tagNMHDR * pNMHDR=0x0012f76c, long * pResult=0x0012f458) 行639 C++
mfc90.dll!78669559()

内部代码:

void CTH_PIMSBaseDoc::UpdateAllViewsEx(CView* pSender, LPARAM lHint ,
CObject* pHint )
{
this->UpdateAllViews(pSender,lHint,pHint);
bModified = FALSE;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • bearweman1 bearweman1 4年前

    VisualEleven Eleven Ds Rxr 2017.03.27 18:02
    采纳
    CTH_PIMSMngTreeView::OnSelchanged函数中你的代码写了些什么?

    void CTH_PIMSMngTreeView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
    {
    CPIMSTransactCheck oTransCheck(_T("CTH_PIMSMngTreeView::OnSelchanged"));

    if(m_bRefreshing) return;
    
    m_bRefreshing = TRUE;
    
    CLEAR_COMMAND_UI_STATE
    
    CWaitCursor tempWait;
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    
    // 改变文档的当前的对象
    CTH_PIMSTreeViewCursor CurrentTreeItem(pNMTreeView->itemNew.hItem,this);
    CTH_PIMSTreeItemData * pItemData = CurrentTreeItem.GetTreeItemData();
    
    // 获得当前节点的引用对象标识
    CTH_ObjectRef CurObjRef;
    CurObjRef = pItemData->GetData();
    
    CT5AppDoc * pPIMSMngDoc = (CT5AppDoc *)this->GetDocument();
    
    //判断当前选择的对象是否是离线文档对象
    if (!isEnableFileBrowser(CurrentTreeItem)) {
        //隐藏离线浏览停靠栏
        GetMainFrame()->BrowserOfflineFile(pPIMSMngDoc, this, FALSE, FALSE);
    } else {
        //更新离线浏览停靠栏的显示内容
        //  注意:如果离线浏览停靠栏没有处于显示状态,则不强制显示
    

    // GetMainFrame()->BrowserOfflineFile(pPIMSMngDoc, this, TRUE, FALSE);
    //等待树控件完成选择节点的切换后,再响应此消息
    PostMessage(TCM_UPDATE_T5BROWSER_WHEN_SWITCHFRAME, 0, 0);
    }

    pPIMSMngDoc->SetCurrentObj(CurObjRef);
    // 重置当前的历史记录号,表示使用最新的版本
    pPIMSMngDoc->ResetCurrentHistoryNum();
    
    // 获得当前节点的目标元素对象
    
    IOb_ObjectPtr  pTargetElementPtr;
    pTargetElementPtr = pPIMSMngDoc->GetTargetElement(CurObjRef);
    
    IOb_EleLinkFolderPtr pEleLinkFolderPtr = NULL;
    pEleLinkFolderPtr = pTargetElementPtr;
    
    // 如果不是链接分类对象,则从数据库中读取
    if(pEleLinkFolderPtr == NULL)
    {
        pTargetElementPtr->RetrieveMainPropertys();
        if(pTargetElementPtr->GetLastResult() != 0 )
        {
            T5MessageBox((TCHAR *)pTargetElementPtr->GetLastErrMsg(),MB_OK|MB_ICONWARNING);
            m_bRefreshing = FALSE;
            m_LastViewCursor = CurrentTreeItem;
            *pResult = 0;
            return ;
        }
        pTargetElementPtr->GetOwnerInfo()->Retrieve();
    
        //add by cw 20090819 
        //更新当前的项目组快速切换信息
        UpdateProjectGroupInfo();
    }
    
    // 通知文档的所有视图文档已经发生变化
    pPIMSMngDoc->UpdateAllViewsEx(NULL);
    
    this->UpdateTreeItem(m_LastViewCursor);
    
    m_LastViewCursor = CurrentTreeItem;
    
    //[ add by luoxb 2010-10-19
    // 根据右键上下文菜单应显示的内容更新Ribbon菜单上的对应功能列表,包括"新建","扩展功能"
    UpdateRibbonFromContextMenu();
    //] end add 2010-10-19
    
    //[ add by luoxb 2010-12-12
    UpdateOpContext(CurrentTreeItem);
    //] end add 2010-12-12
    
    GetApp()->OnIdle(0);
    
    TRACE0("CTH_PIMSMngTreeView::OnSelchanged\n");
    *pResult = 0;
    m_bRefreshing = FALSE;
    

    }

    点赞 评论 复制链接分享
  • VisualEleven Eleven 4年前

    CTH_PIMSMngTreeView::OnSelchanged函数中你的代码写了些什么?

    点赞 评论 复制链接分享
  • shen_wei shen_wei 4年前
  • chengbar sevancheng 4年前

    CView * pSender=0x00000000, long lHint=0, CObject * pHint=0x00000000

    这三个参数值可能没传正确

    点赞 评论 复制链接分享

相关推荐