C++ MFC:SetMapMode(毫米)
我有一个关于MM_的问题 以下代码将缩放图形以匹配窗口大小C++ MFC:SetMapMode(毫米),c++,memory-leaks,mfc,C++,Memory Leaks,Mfc,我有一个关于MM_的问题 以下代码将缩放图形以匹配窗口大小 void CMapModeTestView::OnDraw(CDC* pDC) { CMapModeTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rect; GetClientRect(&rect); pDC->SetMapMode (MM_ANISOTROPIC); pDC->SetWindow
void CMapModeTestView::OnDraw(CDC* pDC)
{
CMapModeTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode (MM_ANISOTROPIC);
pDC->SetWindowExt(1024, 768);
pDC->SetViewportExt(rect.Width(), rect.Height());
/* This line of code draws a rectangle but will not increase memory */
pDC->Rectangle(0, 0, 1024, 768);
/* This line of code draws text but increases memory */
pDC->DrawText(_("Test"), CRect(50, 50, 100, 100), DT_CENTER);
}
若我运行这个程序并检查Windows任务管理器(Windows7),我会看到随着我用鼠标调整程序窗口的大小,内存不断增加
我搜索了与MM_各向异性
模式相关的任何信息,但在设置为MM_各向异性
模式的设备上下文中使用create font时,只能找到与内存泄漏相关的信息
注:程序运行在VS C++ 6 上,这里没有显示任何使用内存的代码,因此无法推测内存泄漏。当你切换到不同的模式时,泄漏会消失吗?是的,这很奇怪。如果使用其他模式,内存不会增加。换句话说,除了MM_各向异性模式外,任何模式都可以,也可以是MM_各向同性模式。因为当我在两台不同的计算机上运行程序时(使用MM_各向同性模式)。一个有内存泄漏,另一个没有。你能发布处理窗口调整消息的代码吗?如果它与您已经发布的内容相同,则发布整个函数,以便我们可以看到对
pDC
所做的操作。使用鼠标调整大小时,它只会泄漏内存。若您双击窗口栏使其最大化,内存不会泄漏。