擅长:python、mysql、java
<p>David:“这些函数必须通过PyWin32来实现”,实际上,它们不是。在</p>
<p>经过几十个小时的搜索,试图找出<code>win32ui</code>,<code>win32gui</code>等的位置,可能有一个隐藏的<code>TextOutW</code>,我自己编写了一个有其他缺陷的C扩展,编写了一个外部程序。从python内部调用发现<code>HDC</code>句柄不能转移到其他进程,我终于偶然发现了这个基于<code>ctypes</code>的简单的预编程解决方案,如上面所示:</p>
<ol>
<li>您需要<code>TextOutW</code>或类似的函数,就像您在windows gdi c中使用的一样。尽管有一个名为<code>win32gdi.DrawTextW</code>的函数,它的工作原理与windows对应的函数完全相同,但有时您需要特别使用,例如<code>TextOut</code>,<code>ExtTextOut</code>等。,在<code>pywin32</code>的<code>win32gdi</code>的unicode<code>W</code>后缀版本中不可用</li>
<li><p>要实现这一点,不要使用有限的<code>win32gui</code>函数,而是使用<code>ctypes</code>提供的<code>windll.gdi32.TextOutW</code>:</p>
<pre><code>from ctypes import *
import win32gdi
# init HDC
# set hdc to something like
hdc = win32gdi.CreateDC(print_processor, printername, devmode)
# here comes the ctypes function that does your deal
text = u'Working! \u4e00\u4e01'
windll.gdi32.TextOutW(hdc, x, y, text, len(text))
# ... continue your prog ...
</code></pre></li>
</ol>
<p>玩得开心点</p>