mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-01 19:26:16 +00:00
Patch by Robert Shearman [email protected], Use GdiGetCharDimensions Instead of DIALOG_GetCharSize.
svn path=/trunk/; revision=16722
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user