我有以下代码:
CClientDC dc(this);
CWnd *pWindow;
CString fontName = _T("");
int iFontSize =0;
//提示字体
CFont* font = new CFont;
fontName =_T("MS Sans Serif");
iFontSize = 300;
font->CreatePointFont(iFontSize, fontName, &dc);
pWindow=(CWnd*)GetDlgItem(IDC_EDIT_PROMPT);
pWindow->SetFont(font, true);
每次使用
DevPartner 的 Error detection 运行时,都提示
Argument 2 in ReleaseDC (HDC__ hdc = 0xB10110FC) still contains non default/stock objects. Font (0x750A142E).
后来经过查资料,发现因为自己有些资源没释放,所以出了这个错误提示
代码改过后,问题解决。
改过后的代码:
CClientDC dc(this);
CWnd *pWindow;
CString fontName = _T("");
int iFontSize =0;
//提示字体
CFont* font = new CFont;
fontName =_T("MS Sans Serif");
iFontSize = 300;
font->CreatePointFont(iFontSize, fontName, &dc);
CFont *pOldFont= dc.SelectObject(font);
pWindow=(CWnd*)GetDlgItem(IDC_EDIT_PROMPT);
pWindow->SetFont(font, true);
dc.SelectObject(pOldFont);
font->DeleteObject();
dc.DeleteDC();
另:
代码改过后,有时 DevPartner 的 Error detection 还可以检测到 Argument 2 in ReleaseDC 的错误,但那不是我程序造成的,而是User32.dll和MFC42.dll,那是微软的问题,我也无能为力了。
转载于:https://www.cnblogs.com/finema/archive/2008/01/15/1039351.html