描述:
我是这样加入的:Project->Add to Project->Conponents and Controls->Registered ActiveX Controls->选择浏览器
然后从控件工具条选择浏览器控件加入到一个基于对话框的程序中,用ClassWizard使它关联于一个变量m_Explore,然后再一个按钮的消息中有一句m_Explore.Navigate(m_sFileName,NULL,NULL,NULL,NULL);m_sFileName是文件名,可以正常显示,但是如果多次点击按钮,即便是显示的是同一个文件,内存依然增长。
网上看到有人说Navigate()方法存在内存泄漏,但我改用Navigate2方法依然如此!
各位大虾,帮帮忙啊,急!
解决方案1:
试试 重载应用程序框架类的OnIdle函数
BOOL CXXXApp::OnIdle(LONG lCount)
{
// TODO: 在此添加专用代码和/或调用基类
try{
if (lCount <= 0)
{
ThreadOnIdle(lCount);
}
else if (lCount == 1)
{
ThreadOnIdle(lCount);
}
return lCount < 1; // more to do if lCount < 1
}
catch(...)
{
return lCount < 1;
}
}
BOOL CXXXApp::ThreadOnIdle(LONG lCount)
{
ASSERT_VALID(this);
try{
if (lCount <= 0)
{
}
else if (lCount >= 0)
{
AFX_MODULE_THREAD_STATE* pState = _AFX_CMDTARGET_GETSTATE()->m_thread;
if (pState->m_nTempMapLock == 0)
{
// free temp maps, OLE DLLs, etc.
AfxLockTempMaps();
AfxUnlockTempMaps();
}
}
}catch(...){}
return lCount < 0; // nothing more to do if lCount >= 0
}
=============================
全新设计的CSDN助手,支持CSDN所有功能,支持监视、收藏、历史
http://community.csdn.net/expert/topicview1.asp?id=4806193
Navigate2没问题吧? 我以前用过怎么没注意到这个问题?
按说如果有内存泄漏的话,你在Debug调试模式下退出程序时,VC的output窗口会有提示的,没有提示就证明没有内漏啊.
IE 控件有自己的内存回收机制,通常情况下是不断增长的,在程序窗口最小化后你会发现内存的使用量立刻减少。