我有一个很小的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)
答案 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)