gdiplus: Don't rely on an HDC in GdipMeasureCharacterRanges.
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 8e203f3..da2d966 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -3834,6 +3834,7 @@
     int i;
     HFONT oldfont;
     struct measure_ranges_args args;
+    HDC temp_hdc=NULL;
 
     TRACE("(%p %s %d %p %s %p %d %p)\n", graphics, debugstr_w(string),
             length, font, debugstr_rectf(layoutRect), stringFormat, regionCount, regions);
@@ -3846,8 +3847,8 @@
 
     if(!graphics->hdc)
     {
-        FIXME("graphics object has no HDC\n");
-        return NotImplemented;
+        temp_hdc = graphics->hdc = CreateCompatibleDC(0);
+        if (!temp_hdc) return OutOfMemory;
     }
 
     if (stringFormat->attr)
@@ -3869,6 +3870,12 @@
 
     DeleteObject(SelectObject(graphics->hdc, oldfont));
 
+    if (temp_hdc)
+    {
+        graphics->hdc = NULL;
+        DeleteDC(temp_hdc);
+    }
+
     return stat;
 }