2011-08-01 101 views
1

我有一個C程序,它有一個文本框組件。我想有一個Python GUI寫文本到這個文本框。目前,我可以用寫文本框HWND如何使用python win32將多行寫入文本框?

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

追加文本

  1. 發送EM_SETSEL消息選擇移動到豐富的編輯控制結束。使用WM_GETTEXTLENGTH找出編輯控件中有多少個字符。
  2. 發送EM_REPLACESEL消息來替換選擇。如果選擇點位於控件的末尾,則替換與添加相同。

不要試圖用WM_GETTEXT & WM_SETTEXT,因爲它很快變得效率低下,更何況事實,即格式不保留。

設置文本格式

使用EM_SETCHARFORMAT格式化文本。更多細節在MSDN

+0

追加文本工作完美! – gh4x

+0

我仍然無法找到更改文本顏色的方法,以便每個附加行都是python中的新顏色。我無法找到使用python調用EM_SETCHARFORMAT的方法。 – gh4x

+0

你嘗試了什麼? –