如何使用pywin32设置lfFaceName

2024-05-14 10:04:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很小的MFC程序,它将移植到pywin32
无法处理对象的名称。
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)

Tags: 程序ifdtdcfontpywin32lfmfc
1条回答
网友
1楼 · 发布于 2024-05-14 10:04:44

如果错误的话分配。那里不会显示任何错误,但默认的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)

相关问题 更多 >

    热门问题