From: <sil...@li...> - 2003-04-14 21:34:58
|
Update of /cvsroot/silgraphite/silgraphite/contrib/fwviews In directory sc8-pr-cvs1:/tmp/cvs-serv17948/contrib/fwviews Modified Files: GrGraphics.cpp Log Message: Synchronized with FW, 14 Apr 2003, changelist #06701 Index: GrGraphics.cpp =================================================================== RCS file: /cvsroot/silgraphite/silgraphite/contrib/fwviews/GrGraphics.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- GrGraphics.cpp 30 Jan 2003 20:17:27 -0000 1.3 +++ GrGraphics.cpp 14 Apr 2003 21:34:23 -0000 1.4 @@ -45,6 +45,7 @@ Init(); m_hfont = NULL; m_hfontOld = NULL; + m_hfontOldMeasure = NULL; } void GrGraphics::Init() @@ -82,6 +83,7 @@ GrGraphics::~GrGraphics() { + BOOL fSuccess; if (m_hdc) { ReleaseDC(); @@ -89,13 +91,13 @@ Assert(!m_hfontOld); if (m_hfontOld) { - ::DeleteObject(m_hfontOld); + fSuccess = AfGdi::DeleteObjectFont(m_hfontOld); m_hfontOld = NULL; } Assert(!m_hfont); if (m_hfont) { - ::DeleteObject(m_hfont); + fSuccess = AfGdi::DeleteObjectFont(m_hfont); m_hfont = NULL; } @@ -900,16 +902,22 @@ // We have called SetFont at least once; the most recent font selected // is in m_hfont and is also the current one in the DC. Select the // original one back into the DC to prevent GDI memory leaks and similar problems. - HFONT hfontPrev = (HFONT) ::SelectObject(m_hdc, m_hfontOld); + HFONT hfontPrev = AfGdi::SelectObjectFont(m_hdc, m_hfontOld, AfGdi::OLD); Assert(hfontPrev == m_hfont); Assert(hfontPrev != m_hfontOld); m_hfont = 0; - ::DeleteObject(hfontPrev); + fSuccess = AfGdi::DeleteObjectFont(hfontPrev); m_hfontOld = 0; } Assert(m_hfont == 0); if (m_hfontOldMeasure) - ::SelectObject(m_hdcMeasure, m_hfontOldMeasure); + { + HFONT hfontPrev; + hfontPrev = AfGdi::SelectObjectFont(m_hdcMeasure, m_hfontOldMeasure, AfGdi::OLD); + fSuccess = AfGdi::DeleteObjectFont(hfontPrev); + Assert(fSuccess); + m_hfontOldMeasure = NULL; + } fSuccess = ::RestoreDC(m_hdc, -1); // -1 means most recently saved Assert(fSuccess); } @@ -1023,7 +1031,7 @@ NULL, NULL); // default handling of unconvertibles #endif // not unicode HFONT hfont; - hfont = CreateFontIndirect(&lf); + hfont = AfGdi::CreateFontIndirect(&lf); if (!hfont) ThrowHr(WarnHr(kresFail)); SetFont(hfont); @@ -1071,6 +1079,7 @@ Assert(fSuccess); m_hfontOld = 0; + m_hfontOldMeasure = 0; //::SetMapMode(hdc, MM_TEXT); #if 0 // old code to force it to be twips. May be useful for ActiveX control ::SetWindowExtEx(hdc, 1440, 1440, NULL); // 72*20 twips per inch @@ -1193,14 +1202,15 @@ // Set the requested font. Discard the current one, if any. void GrGraphics::SetFont(HFONT hfont) { + BOOL fSuccess; if (hfont == m_hfont) return; // Select the new font into the device context - HFONT hfontPrev = (HFONT) ::SelectObject(m_hdc, hfont); + HFONT hfontPrev = AfGdi::SelectObjectFont(m_hdc, hfont); HFONT hfontPrevM = 0; // for measure DC if (m_hdc != m_hdcMeasure) { - hfontPrevM = (HFONT) ::SelectObject(m_hdcMeasure, hfont); + hfontPrevM = AfGdi::SelectObjectFont(m_hdcMeasure, hfont); // If this is the very first font we have selected into the measure DC, we need // to remember it and restore it when done. All other fonts in the measure DC // are the same ones whose lifetime is being managed for the main DC. @@ -1217,7 +1227,7 @@ // GDI memory leak that causes weird drawing failures on W-98. Assert(m_hfont); Assert(m_hfont == hfontPrev); - ::DeleteObject(m_hfont); + fSuccess = AfGdi::DeleteObjectFont(m_hfont); } else { |