如何使用python win32将多行写入文本框?

时间:2011-08-01 15:22:57

标签: python c winapi textbox

我有一个包含文本框组件的C程序。我想在这个文本框中有一个python GUI写文本。目前,我可以使用:

写入文本框HWND
def winFunc(hwnd, lparam):
    s = win32gui.GetWindowText(hwnd)
    if s == "":
        win32gui.SendMessage(hwnd, win32con.WM_SETTEXT, 0, lparam)

hwnd = win32gui.FindWindow("Graph Program", None)
win32gui.EnumChildWindows(hwnd, winFunc, text)

此代码会将文本写入文本框,但不能将文本添加到文本框的换行符中。是否可以读入文本框中当前的文本或是否可以将文本添加到文本框?我是使用Windows API的新手。此外,是否可以将文本写为不同的颜色?文本框类为RICHEDIT20A

1 个答案:

答案 0 :(得分:1)

追加文字

  1. 发送EM_SETSEL消息,将选择内容移动到富编辑控件的末尾。使用WM_GETTEXTLENGTH查找编辑控件中有多少个字符。
  2. 发送EM_REPLACESEL消息以替换选择。如果选择点位于控件的末尾,则替换与追加相同。
  3. 请勿尝试使用WM_GETTEXT& WM_SETTEXT因为它很快变得低效,更不用说格式化没有保留。

    格式化文字

    使用EM_SETCHARFORMAT格式化文字。有关详情请见MSDN