WebBrowser Control in ATL window. How to free up memory on window unload? I'm stuck.

Posted by Martin on Stack Overflow See other posts from Stack Overflow or by Martin
Published on 2010-04-14T20:13:44Z Indexed on 2010/04/14 20:43 UTC
Read the original article Hit count: 456

Hello there.

I have a Win32 C++ Application. There is the _tWinMain(...) Method with GetMessage(...) in a while loop at the end. Before GetMessage(...) I create the main window with

HWND m_MainHwnd = CreateWindowExW(WS_EX_TOOLWINDOW | WS_EX_LAYERED, CAxWindow::GetWndClassName(), _TEXT("http://www.-website-.com"), WS_POPUP, 0, 0, 1024, 768, NULL, NULL, m_Instance, NULL);

ShowWindow(m_MainHwnd)

If I do not create the main window, my application needs about 150K in memory.

But with creating the main window with the WebBrowser Control inside, the memory usage increases to 8500K.

But, I want to dynamically unload the main window. My _tWinMain(...) keeps running! Im unloading with

DestroyWindow(m_MainHwnd)

But the WebBrowser control won't unload and free up it's memory used!

Application memory used is still 8500K!

I can also get the WebBrowser Instance or with some additional code the WebBrowser HWND

IWebBrowser2* m_pWebBrowser2;

CAxWindow wnd = (CAxWindow)m_MainHwnd;

HRESULT hRet = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_pWebBrowser2); 

So I tried to free up the memory used by main window and WebBrowser control with (let's say it's experimental):

if(m_pWebBrowser2) 
   m_pWebBrowser2->Release();

DestroyWindow(m_hwndWebBrowser);  //<-- just analogous

OleUninitialize();

No success at all.

I also created a wrapper class which creates the main window. I created a pointer and freed it up with delete:

Wrapper* wrapper = new Wrapper();
//wrapper creates main window inside and shows it
//...do some stuff
delete(wrapper);

No success. Still 8500K. So please, how can I get rid of the main window and it's WebBrowser control and free up the memory, returning to about 150K. Later I will recreate the window. It's a dynamically load and unload of the main window, depending on other commands.

Thanks!

Regards

Martin

© Stack Overflow or respective owner

Related posts about c++

Related posts about webbrowser-control