У меня есть приложение Win32 C ++. В конце цикла есть метод _tWinMain (...) с GetMessage (...). Перед GetMessage (...) я создаю главное окно с
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)
Если я не создаю главное окно, моему приложению требуется около 150 КБ памяти.
Но с созданием главного окна с элементом управления WebBrowser использование памяти увеличивается до 8500K.
Но я хочу динамически выгрузить главное окно. Мой _tWinMain (...) продолжает работать! Я разгружаюсь с
DestroyWindow(m_MainHwnd)
Но элемент управления WebBrowser не будет выгружаться и освобождать используемую память!
Используемая память приложения все еще 8500K!
Я также могу получить экземпляр WebBrowser или с некоторым дополнительным кодом WebBrowser HWND
IWebBrowser2* m_pWebBrowser2;
CAxWindow wnd = (CAxWindow)m_MainHwnd;
HRESULT hRet = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_pWebBrowser2);
Итак, я попытался освободить память, используемую главным окном и элементом управления WebBrowser с помощью (скажем, экспериментального):
if(m_pWebBrowser2)
m_pWebBrowser2->Release();
DestroyWindow(m_hwndWebBrowser); //<-- just analogous
OleUninitialize();
Безуспешно.
Я также создал класс-обертку, который создает главное окно. Я создал указатель и освободил его с помощью delete:
Wrapper* wrapper = new Wrapper();
//wrapper creates main window inside and shows it
//...do some stuff
delete(wrapper);
Нет успеха. Еще 8500К.
Поэтому, пожалуйста, как я могу избавиться от главного окна и его элемента управления WebBrowser и освободить память, возвращаясь примерно к 150K.
Позже я воссоздаю окно. Это динамическая загрузка и выгрузка главного окна, в зависимости от других команд.
Спасибо!
Привет
Martin