В win32 как настроить механизм обратного вызова для RichEdit, который я не создал сам?
ЧАСТЬ 1
Я читаю из поля textedit в графическом интерфейсе другого приложения . Теперь это прекрасно работает, за исключением того, что после первого чтения я хочу получать только новые или измененные строки. В GTK + или Qt я бы просто установил обратный вызов для некоторого сигнала, который поле редактирует, когда оно изменилось, но как это работает на Win32?
Мой поиск в MSDN не дал ничего полезного, возможно потому, что я не знаю точный термин для поиска. Класс textedit - RichText20W , и у него есть сообщения , которые, вероятно, используются каким-то образом, хотя в этой статье только обсуждается использование их для родителя класса.
ЧАСТЬ 2
Кроме того, , если нет такого «измененного текста», это обратный вызов вновь вставленного текста, который немедленно возвращает новое содержимое, мне нужен какой-то способ, чтобы легко определить, что нового. С макушки головы:
- Пометьте маркер в конце текстового блока, который мы прочитали, и читайте только между этим и концом.
- Сохраните то, что мы прочитали ранее, и после второго чтения удалите дублирующую часть из последней, чтобы получить вновь вставленный материал.
Вариант 2 может быть нежизнеспособным, так как textedit может содержать любое количество текста. Часть маркера звучит выполнимо, но опять же, мои слабые навыки Win32 и ужасные названия функций Win32 мешают мне найти правильный способ сделать это.
Обратите внимание, что все это должно быть выполнимо для textedit, который я не владею и не создал, он принадлежит стороннему процессу.
Примеры кода в C ++ высоко ценятся.
Отказ
Очевидно, если есть какой-то лучший способ сделать это, дайте мне знать. Я только предполагал, что обратный вызов будет способом, основанным на моем предыдущем опыте с GTK + / Qt. Не стесняйтесь, чтобы показать мне путь:)