我的dll中有个Frame,在frame中重载了GetMessageString,为什么调试时不进这个函数呢?

解决方案 »

  1.   

    我在不是dll中的frame中重载可以响应得到,为什么在dll中不行呢?
    感觉在dll中的frame上的toolbar,很多消息都没有呢?
      

  2.   

    在DLL中有frame时,可能破坏了它的消息循环,不知道你是怎么把frame加到DLL中的,可以的话帮你看看代码AFX_MANAGE_STATE(AfxGetStaticModuleState());
    if(FSCreateDocTempl(winApp)==NULL)
    return NULL; if (!AfxOleInit())
    {
    AfxMessageBox(IDP_OLE_INIT_FAILED);
    return FALSE;
    }

    if(pObj == NULL)
    pObj = new OfficeShareApp; pObj->m_pWinApp = AfxGetApp();
    pObj->SetRsc(); // setup DLL resource handler pObj->m_pDoc1Templ = new CMultiDocTemplate(
    IDR_EXETYPE,
    RUNTIME_CLASS(CMDIOfficeShareDoc),
    RUNTIME_CLASS(CChildFrame),
    RUNTIME_CLASS(CMDIOfficeShareView));
    pObj->m_pWinApp->AddDocTemplate(pObj->m_pDoc1Templ); pMDIFrameWnd = new CMainFrame;
    if(pMDIFrameWnd == NULL)
    {
    TRACE("CreateFrame´´½¨Ê§°Ü");
    return NULL;
    }
    if (!pMDIFrameWnd->LoadFrame(IDR_MAINFRAME))
    {
    TRACE("pMDIFrameWnd->LoadFrame Failed");
    return NULL;
    } pObj->RestoreRsc();
    return pMDIFrameWnd;
    这个是我嵌入frame的方式
      

  3.   

    谢谢3楼,我的DLL中没有mainframe,也没有doc,我现在把PreTranslateMessage转发了下,暂时解决问题。