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.