문제

    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);

Here, ieThreadProc is a static thread proc.I have Win32 window (this->m_hWnd) which is suppose to be the parent of this IWebBrowser2 com control.Because of Cross thread problem, I post the message to the thread where the IE control is created and work with it. While debugging it doesn't show any breakage. But, the IE control simply displays blank and no page is displayed. Kindly help me with the solution.

도움이 되었습니까?

해결책

The browser operates asynchronously via window messages. Make sure that the message loop of the thread that owns the browser window is processing messages that are destined for the browser's window, such as by passing them to TranslateMessage() and DispatchMessage() after retreiving them from the thread's message queue (if it is not already doing so - it is hard to say since you do not show what createUIThread() does outside of ieThreadPorc()).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top