Html control embedded
Hi,
I am developping with MFC on Windows Mobile platforms and I have some
questions about embedding a HTML control inside a control.
Here is the sample code I wrote :
BEGIN_MESSAGE_MAP(CHtmlWnd, CWnd)
ON_WM_WINDOWPOSCHANGED()
END_MESSAGE_MAP()
int CHtmlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) != 0)
{
return -1;
}
Init();
return 0;
}
void CHtmlWnd::PreSubclassWindow()
{
Init();
}
void CHtmlWnd::Init()
{
if (m_bInited == true)
return;
if (m_HtmlViewInstance == 0) {
m_HtmlViewInstance = ::LoadLibrary(L"htmlview.dll");
}
VERIFY( InitHTMLControl( AfxGetInstanceHandle() ));
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER;
RECT rect;
GetClientRect(&rect);
m_hwndHtml = ::CreateWindow( DISPLAYCLASS,
NULL,
dwStyle,
rect.left,
rect.top,
rect.right,
rect.bottom,
m_hWnd,
0,
m_HtmlViewInstance,
NULL);
if ((m_hwndHtml != NULL) && (m_HtmlViewInstance != NULL))
{
ATLTRACE( _T("Host Control Handle : m_hWnd = 0x%x\n"), m_hWnd );
ATLTRACE( _T("Html Control Handle : m_hwndHtml = 0x%x\n"), m_hwndHtml );
::SetWindowLong(m_hwndHtml, GWL_ID, 12321);
::SetFocus (m_hwndHtml);
::SendMessage(m_hwndHtml, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)_T(""));
m_bInited = true;
}
}
void CHtmlWnd::DeInit()
{
if (m_hwndHtml != NULL)
{
::DestroyWindow(m_hwndHtml);
m_hwndHtml = NULL;
}
if (m_HtmlViewInstance != NULL)
{
::FreeLibrary( m_HtmlViewInstance );
m_HtmlViewInstance = NULL;
}
m_bInited = false;
}
Actually I have declared a control deriving from CWnd and inside the
OnCreate I am loading the DLL htmlview.dll and I call its function
InitHTMLControl.
After I create a HTML who will receive HTML messages.
The problem with this is I get two windows handle for this control and
sometimes when my application is loading and there is a heavy cpu load I
see that the HTML control is not painted.
Would it be possible to declare a CWnd control with only the HTML
control as main window ?