У меня есть программа на языке С, которая имеет компонент текстового поля. Я хочу, чтобы в этом текстовом поле был написан графический интерфейс 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)
Этот код будет писать текст в текстовое поле, но он не может добавлять текст в новую строку в текстовое поле. Можно ли читать текст, который в настоящее время находится в текстовом поле, или можно добавить текст в текстовое поле? Я новичок в использовании API окон. Кроме того, можно ли писать текст как другой цвет? Класс текстового поля - RICHEDIT20A
.
Добавление текста
EM_SETSEL
чтобы переместить выделение в конец элемента управления редактирования. Используйте WM_GETTEXTLENGTH
чтобы узнать, сколько символов находится в элементе управления редактированием.EM_REPLACESEL
чтобы заменить выбор. Если точка выбора находится в конце элемента управления, то замена такая же, как и добавление. Не пытайтесь использовать WM_GETTEXT
& WM_SETTEXT
так как он быстро становится неэффективным, не говоря уже о том, что форматирование не сохраняется.
Форматирование текста
Используйте EM_SETCHARFORMAT
для форматирования текста. Более подробная информация в MSDN.