在Win32 GUI應用程序中,我需要確定工具欄按鈕上字符串佔用的區域寬度,以便相應地調整按鈕寬度。該工具欄是普通的老式ToolbarWindow32
windows類。我使用下面的代碼:爲什麼我會在工具欄上弄錯文字大小?
HDC dc = GetDC(toolbarWindowHandle);
SIZE size;
GetTextExtentPoint32(dc, stringToMeasure, tcslen(stringToMeasure), &size);
對於一些固定的字符串(說「你好」)size.cx
充滿說72,但是當我做了工具欄的截圖上一個按鈕,我看到,顯示的非常相同的字符串該字符串佔據56個像素。
區別很明顯取決於系統字體設置。我使用「大字體」,代碼獲得的值比屏幕上佔用的大。在具有「小字體」的機器上,獲得的值較小。
我想如果我在窗口設備上下文中使用GetTextExtentPoint32(),它將返回完全正確的大小。我究竟做錯了什麼?
原來,發送WM_GETFONT準確獲得必要的字體。 – sharptooth 2009-11-02 15:46:44