如何使用pywin32设置lfFaceName

时间:2014-08-25 15:06:35

标签: python mfc pywin32

我有一个很小的MFC程序,它将移植到 pywin32 但我无法处理 LOGFONT 对象的 lfFaceName
lfWidth & lfHeight 可以很容易地处理,但 lfFaceName 没有。
我尝试了几种不同的 lfFaceName ,但似乎结果相同?
这是我尝试过的一个示例python代码片段。

lf            = win32gui.LOGFONT()
lf.lfFaceName = "Arial"    #Is this the correct way???

if iWidth < 16:
    lf.lfWidth = iWidth
else:
    lf.lfWidth = iWidth/2
if lf.lfHeight > iHeight:
    lf.lfHeight = iHeight
if lf.lfHeight < iHeight-1:
    lf.lfHeight = iHeight-1

s_Font = win32gui.CreateFontIndirect(lf)
win32gui.SelectObject (s_DC, s_Font)
win32gui.DrawText(s_DC, sText, len(sText),(0, 0, iWidth, iHeight), DT_VCENTER|DT_SINGLELINE|DT_CENTER)

1 个答案:

答案 0 :(得分:0)

如果分配了错误的 lfFaceName ,则不会显示任何错误,但会使用默认的FaceName。因此,此应用程序需要FaceName枚举。 我们可以通过 FaceName [] 获取完整的 lfFaceName 列表。

import win32gui


def callback(font, tm, fonttype, fonts):
    fonts.append(font)
    FaceName.append(font.lfFaceName)
    return True


FaceName = []
fonts    = []
hdc = win32gui.CreateDC('DISPLAY','Display',None)
win32gui.EnumFontFamilies(hdc, None, callback, fonts)