gdiplus: Don't rely on an HDC in GdipMeasureString.
This commit is contained in:
parent
867f3d39e7
commit
3e86d43030
|
@ -3918,6 +3918,7 @@ GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics,
|
||||||
{
|
{
|
||||||
HFONT oldfont;
|
HFONT oldfont;
|
||||||
struct measure_string_args args;
|
struct measure_string_args args;
|
||||||
|
HDC temp_hdc=NULL;
|
||||||
|
|
||||||
TRACE("(%p, %s, %i, %p, %s, %p, %p, %p, %p)\n", graphics,
|
TRACE("(%p, %s, %i, %p, %s, %p, %p, %p, %p)\n", graphics,
|
||||||
debugstr_wn(string, length), length, font, debugstr_rectf(rect), format,
|
debugstr_wn(string, length), length, font, debugstr_rectf(rect), format,
|
||||||
|
@ -3928,8 +3929,8 @@ GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics,
|
||||||
|
|
||||||
if(!graphics->hdc)
|
if(!graphics->hdc)
|
||||||
{
|
{
|
||||||
FIXME("graphics object has no HDC\n");
|
temp_hdc = graphics->hdc = CreateCompatibleDC(0);
|
||||||
return NotImplemented;
|
if (!temp_hdc) return OutOfMemory;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(linesfilled) *linesfilled = 0;
|
if(linesfilled) *linesfilled = 0;
|
||||||
|
@ -3954,6 +3955,12 @@ GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics,
|
||||||
|
|
||||||
DeleteObject(SelectObject(graphics->hdc, oldfont));
|
DeleteObject(SelectObject(graphics->hdc, oldfont));
|
||||||
|
|
||||||
|
if (temp_hdc)
|
||||||
|
{
|
||||||
|
graphics->hdc = NULL;
|
||||||
|
DeleteDC(temp_hdc);
|
||||||
|
}
|
||||||
|
|
||||||
return Ok;
|
return Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue