在线程内执行 MDIGetActive()总是返回NULL,为什么呢?在其它地方是可以正常返回的,就是在线程内不能,真搞不懂呀。。弄了一下午了。

解决方案 »

  1.   

    没错误提示,只是返回NULL,我用GetLastError(),也是返回0,没有错误可捕抓
      

  2.   

    我用其它方法解决了问题,能够取得活动窗口,但还是有问题
    (我的程序是一个基于CHTMLVIEW的简单浏览器)下面的代码是可以正常工作的但如果是在那个线程内调用,地址可以正确转向,但如果是JS代码,则无法执行,也没有任何错误提示。void CGXView::Nav(CString url, BOOL execScript)
    {
    if(execScript)
    {
      IHTMLDocument2 * pDoc = (IHTMLDocument2*) m_wndWB.GetDocument();
    if(pDoc==NULL) return;
    CString script;
    script.Format("try{%s}catch(e){alert(e.message);}",url);
    IHTMLWindow2 * w;
    pDoc->get_parentWindow(&w);
    VARIANT varRet;
    HRESULT hr = w->execScript(script.AllocSysString(), L"javascript", &varRet);
    }else{
              ...............
            }
    }
      

  3.   

    Returns S_OK if successful, or an error value otherwise.HRESULT hr 的返回值原来不是S_OK,但找不相错误代码对应的解释呀。。结果返回是 -2147418113
      

  4.   

    天沧沧,野茫茫,
    Unexpected failure
      

  5.   

    MDIGetActive你是如何使用的?线程内使用它来操作GUI,这个要看你如何使用了,线程和GUI线程之间的交互你处理好了么?问题还是在你的读线程使用和操控。