]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dc.cpp
switched to new XPM code in wxMSW
[wxWidgets.git] / src / msw / dc.cpp
index 1863a0d1da6daf2dd4d0a87a6112768c110c0b1d..2ffb9264179c7d0dddedb239ece36638b55f24af 100644 (file)
@@ -1171,7 +1171,7 @@ void wxDC::SetRop(WXHDC dc)
     SetROP2(GetHdc(), rop);
 }
 
-bool wxDC::StartDoc(const wxString& message)
+bool wxDC::StartDoc(const wxString& WXUNUSED(message))
 {
     // We might be previewing, so return TRUE to let it continue.
     return TRUE;
@@ -1213,22 +1213,35 @@ wxCoord wxDC::GetCharWidth() const
 
 void wxDC::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
                            wxCoord *descent, wxCoord *externalLeading,
-                           wxFont *theFont) const
+                           wxFont *font) const
 {
-    wxFont *fontToUse = (wxFont*) theFont;
-    if (!fontToUse)
-        fontToUse = (wxFont*) &m_font;
+    HFONT hfontOld;
+    if ( font )
+    {
+        wxASSERT_MSG( font->Ok(), _T("invalid font in wxDC::GetTextExtent") );
+
+        hfontOld = (HFONT)::SelectObject(GetHdc(), GetHfontOf(*font));
+    }
+    else // don't change the font
+    {
+        hfontOld = 0;
+    }
 
     SIZE sizeRect;
     TEXTMETRIC tm;
 
-    GetTextExtentPoint(GetHdc(), WXSTRINGCAST string, wxStrlen(WXSTRINGCAST string), &sizeRect);
+    GetTextExtentPoint(GetHdc(), string, string.length(), &sizeRect);
     GetTextMetrics(GetHdc(), &tm);
 
     if (x) *x = XDEV2LOGREL(sizeRect.cx);
     if (y) *y = YDEV2LOGREL(sizeRect.cy);
     if (descent) *descent = tm.tmDescent;
     if (externalLeading) *externalLeading = tm.tmExternalLeading;
+
+    if ( hfontOld )
+    {
+        ::SelectObject(GetHdc(), hfontOld);
+    }
 }
 
 void wxDC::SetMapMode(int mode)