Rob Shearman : ole32:
Use the default icon title font when writing the caption text out in
OleMetafilePictFromIconAndLabel .
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Dec 4 07:16:54 CST 2006
Module: wine
Branch: master
Commit: 2fa7cadf07c92128c2954677a619a0a14b7682c5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2fa7cadf07c92128c2954677a619a0a14b7682c5
Author: Rob Shearman <rob at codeweavers.com>
Date: Fri Dec 1 15:05:17 2006 +0000
ole32: Use the default icon title font when writing the caption text out in OleMetafilePictFromIconAndLabel.
---
dlls/ole32/ole32_main.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/dlls/ole32/ole32_main.c b/dlls/ole32/ole32_main.c
index b9c2b67..377aa4d 100644
--- a/dlls/ole32/ole32_main.c
+++ b/dlls/ole32/ole32_main.c
@@ -49,15 +49,29 @@ HGLOBAL WINAPI OleMetafilePictFromIconAn
INT icon_height;
INT label_offset;
HDC hdcScreen;
+ LOGFONTW lf;
+ HFONT font;
TRACE("%p %p %s %d\n", hIcon, lpszLabel, debugstr_w(lpszSourceFile), iIconIndex);
if( !hIcon )
return NULL;
+ if (!SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0))
+ return NULL;
+
+ font = CreateFontIndirectW(&lf);
+ if (!font)
+ return NULL;
+
hdc = CreateMetaFileW(NULL);
if( !hdc )
+ {
+ DeleteObject(font);
return NULL;
+ }
+
+ SelectObject(hdc, font);
ExtEscape(hdc, MFCOMMENT, sizeof(szIconOnly), szIconOnly, 0, NULL);
@@ -67,10 +81,13 @@ HGLOBAL WINAPI OleMetafilePictFromIconAn
label_offset = icon_height;
if (lpszLabel)
{
+ HFONT screen_old_font;
/* metafile DCs don't support GetTextExtentPoint32, so size the font
* using the desktop window DC */
hdcScreen = GetDC(NULL);
+ screen_old_font = SelectObject(hdcScreen, font);
GetTextExtentPoint32W(hdcScreen, lpszLabel, lstrlenW(lpszLabel), &text_size);
+ SelectObject(hdcScreen, screen_old_font);
ReleaseDC(NULL, hdcScreen);
}
width = max(text_size.cx, icon_width);
@@ -105,6 +122,7 @@ HGLOBAL WINAPI OleMetafilePictFromIconAn
mfp.mm = MM_ANISOTROPIC;
mfp.xExt = mfp.yExt = 0; /* FIXME ? */
mfp.hMF = CloseMetaFile(hdc);
+ DeleteObject(font);
if( !mfp.hMF )
return NULL;
More information about the wine-cvs
mailing list