mirror of
https://github.com/reactos/reactos.git
synced 2025-06-06 01:40:36 +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
|
||||
* 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
|
||||
|
|
|
@ -33,5 +33,6 @@
|
|||
|
||||
/* FIXME: FILIP */
|
||||
HGDIOBJ STDCALL NtGdiSelectObject(HDC hDC, HGDIOBJ hGDIObj);
|
||||
DWORD STDCALL GdiGetCharDimensions(HDC, LPTEXTMETRICW, DWORD *);
|
||||
|
||||
#endif /* USER32_H */
|
||||
|
|
|
@ -692,11 +692,14 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate,
|
|||
if (dlgInfo->hUserFont)
|
||||
{
|
||||
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->yBaseUnit = charSize.cy;
|
||||
}
|
||||
SelectObject( dc, hOldFont );
|
||||
}
|
||||
ReleaseDC(0, dc);
|
||||
}
|
||||
|
@ -1828,7 +1831,8 @@ GetDialogBaseUnits(VOID)
|
|||
|
||||
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 );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue