Question

    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.

Was it helpful?

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()).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top