mirror of
https://github.com/reactos/reactos.git
synced 2025-06-07 10:20:26 +00:00
Patch by Robert Shearman rob@codeweavers.com, Use GdiGetCharDimensions Instead of DIALOG_GetCharSize.
svn path=/trunk/; revision=16722
This commit is contained in:
parent
971f04ec99
commit
a2f80d0873
3 changed files with 13 additions and 2 deletions
|
@ -806,6 +806,12 @@ RemoveFontResourceA(
|
||||||
*
|
*
|
||||||
* SEE ALSO
|
* SEE ALSO
|
||||||
* GetTextExtentPointW, GetTextMetricsW, MapDialogRect.
|
* GetTextExtentPointW, GetTextMetricsW, MapDialogRect.
|
||||||
|
*
|
||||||
|
* Despite most of MSDN insisting that the horizontal base unit is
|
||||||
|
* tmAveCharWidth it isn't. Knowledge base article Q145994
|
||||||
|
* "HOWTO: Calculate Dialog Units When Not Using the System Font",
|
||||||
|
* says that we should take the average of the 52 English upper and lower
|
||||||
|
* case characters.
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
|
|
@ -33,5 +33,6 @@
|
||||||
|
|
||||||
/* FIXME: FILIP */
|
/* FIXME: FILIP */
|
||||||
HGDIOBJ STDCALL NtGdiSelectObject(HDC hDC, HGDIOBJ hGDIObj);
|
HGDIOBJ STDCALL NtGdiSelectObject(HDC hDC, HGDIOBJ hGDIObj);
|
||||||
|
DWORD STDCALL GdiGetCharDimensions(HDC, LPTEXTMETRICW, DWORD *);
|
||||||
|
|
||||||
#endif /* USER32_H */
|
#endif /* USER32_H */
|
||||||
|
|
|
@ -692,11 +692,14 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate,
|
||||||
if (dlgInfo->hUserFont)
|
if (dlgInfo->hUserFont)
|
||||||
{
|
{
|
||||||
SIZE charSize;
|
SIZE charSize;
|
||||||
if (DIALOG_GetCharSize( dc, dlgInfo->hUserFont, &charSize ))
|
HFONT hOldFont = SelectObject( dc, dlgInfo->hUserFont );
|
||||||
|
charSize.cx = GdiGetCharDimensions( dc, NULL, &charSize.cy );
|
||||||
|
if (charSize.cx)
|
||||||
{
|
{
|
||||||
dlgInfo->xBaseUnit = charSize.cx;
|
dlgInfo->xBaseUnit = charSize.cx;
|
||||||
dlgInfo->yBaseUnit = charSize.cy;
|
dlgInfo->yBaseUnit = charSize.cy;
|
||||||
}
|
}
|
||||||
|
SelectObject( dc, hOldFont );
|
||||||
}
|
}
|
||||||
ReleaseDC(0, dc);
|
ReleaseDC(0, dc);
|
||||||
}
|
}
|
||||||
|
@ -1828,7 +1831,8 @@ GetDialogBaseUnits(VOID)
|
||||||
|
|
||||||
if ((hdc = GetDC(0)))
|
if ((hdc = GetDC(0)))
|
||||||
{
|
{
|
||||||
if (DIALOG_GetCharSize( hdc, 0, &size )) units = MAKELONG( size.cx, size.cy );
|
size.cx = GdiGetCharDimensions( hdc, NULL, &size.cy );
|
||||||
|
if (size.cx) units = MAKELONG( size.cx, size.cy );
|
||||||
ReleaseDC( 0, hdc );
|
ReleaseDC( 0, hdc );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue