C++ 尝试在单独的线程中创建IWebBrowser2控件时未创建该控件

C++ 尝试在单独的线程中创建IWebBrowser2控件时未创建该控件,c++,multithreading,visual-c++,win32gui,iwebbrowser2,C++,Multithreading,Visual C++,Win32gui,Iwebbrowser2,在这里,ieThreadProc是一个静态线程过程。我有一个Win32窗口(this->m_hWnd),它应该是这个IWebBrowser2 com控件的父级。由于跨线程问题,我将消息发布到创建IE控件的线程并使用它。调试时,它没有显示任何破损。但是,IE控件只显示空白,不显示任何页面。请帮助我解决问题。浏览器通过窗口消息异步运行。确保拥有浏览器窗口的线程的消息循环正在处理发往浏览器窗口的消息,例如,从线程的消息队列中检索消息后,将消息传递给TranslateMessage()和Dispatch

在这里,ieThreadProc是一个静态线程过程。我有一个Win32窗口(this->m_hWnd),它应该是这个IWebBrowser2 com控件的父级。由于跨线程问题,我将消息发布到创建IE控件的线程并使用它。调试时,它没有显示任何破损。但是,IE控件只显示空白,不显示任何页面。请帮助我解决问题。

浏览器通过窗口消息异步运行。确保拥有浏览器窗口的线程的消息循环正在处理发往浏览器窗口的消息,例如,从线程的消息队列中检索消息后,将消息传递给
TranslateMessage()
DispatchMessage()
(如果它还没有这样做-很难说,因为您没有显示
createUIThread()
ieThreadPorc()
之外所做的事情)

    void CUIPopupWnd::ieThreadProc(MSG* msg, LPVOID lpParameter){

    CUIPopupWnd *ptrPopUpWndCtrl = (CUIPopupWnd*)GetWindowLongPtr((HWND)msg->wParam , GWLP_USERDATA);
    switch(msg->message)
    {
    case WM_IECREATE:
        {
            REPORT_INTERNAL_SW_ERROR_EXT(L"HTML frame is going to be created.");        
            ptrPopUpWndCtrl->m_htmlAttributes.pBrowser = new (nothrow)CUIHTMLFrameWnd((HWND)msg->wParam,ptrPopUpWndCtrl->m_ulPresentWidth,ptrPopUpWndCtrl->m_ulPresentHeight);              

            if( NULL == ptrPopUpWndCtrl->m_htmlAttributes.pBrowser )
            {
                REPORT_INTERNAL_SW_ERROR_EXT(L"EmbeddedBrowser failed");
            }
            else
            {
                //m_htmlAttributes.pBrowser->createControl(this->m_hWnd,this->m_ulPresentWidth,this->m_ulPresentHeight);
                ptrPopUpWndCtrl->m_htmlAttributes.pBrowser->m_currentURL = ptrPopUpWndCtrl->m_htmlAttributes.m_szHTMLPath;
                ptrPopUpWndCtrl->m_htmlAttributes.pBrowser->RepaintBrowser();
                ptrPopUpWndCtrl->m_htmlWindowsList.push_front(ptrPopUpWndCtrl);
                ptrPopUpWndCtrl->m_htmlAttributes.pBrowser->Navigate(ptrPopUpWndCtrl->m_htmlAttributes.pBrowser->m_currentURL);
            }           
        }
        break;
    case WM_IEREFRESH:
        {           
            ptrPopUpWndCtrl->m_htmlAttributes.pBrowser->Navigate(ptrPopUpWndCtrl->m_htmlAttributes.pBrowser->m_currentURL);
            ptrPopUpWndCtrl->m_htmlAttributes.m_fReloadRequired = false;

        }
        break;  
    default:
        return;
    }

    CThreadController::getThreadController().createUIThread( ieThreadProc, IEThread,NULL );
            CThreadController::getThreadController().postThreadMessage(IEThread,WM_IECREATE,(_wparam)this->m_hWnd,0);

CThreadController::getThreadController().postThreadMessage(IEThread,WM_IEREFRESH,(_wparam)this->m_hWnd,0);