Вопрос по сообщениям окна!

  • Автор темы akahan
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

akahan

#1
Вопрос по сообщениям окна!Привет всем!
Такой вопрос:
Я суперклассирую EDIT. Мне нужно из WndProc моего контрола отследить когда длина текста в MYEDITе равна 0.
Допустим, я могу это отследить из родительского окна с помощью EN_UPDATE или EN_CHANGE, но как мне это сделать из WndProc моего контрола?
Я думаю можно отслеживать с помощью отлова WM_KEYDOWN, но, ведь, текст можно вставить из clipboard, тогда еще нужно отслеживать WM_PASTE и тд. Должно же быть более оригинальное решение!
С помощью каких сообщений окна это можно отследить?
Посоветуйте, ГУРУ!!! :D
 
Z

zubr

#2
Можно в классе своего контрола создать статическую процедуру обработки сообщений родительского окна типа static LRESULT CALLBACK ParentWindowProc и с помощью GetWindowLong, SetWindowLong сабклассировать его.
 
A

akahan

#3
Спасибо за совет, но так не получится! Подумайте сами, таких котролов может быть несколько, и у них могут быть разные родители, а процедура одна. Так не выйдет!
Нужно каким то образом отследить изменения контрола, а как не понятно!
 
Z

zubr

#4
Можно воспользоваться макросами ON_NOTIFY_REFLECT или ON_NOTIFY_REFLECT_EX - они отражают сообщения родительского окна на дочернее.
 
A

akahan

#5
Вся фишка в том, что я не использую ни ATL ни MFC. Я пишу в С++ и использую чистый Win API.
Мне, кстати, в другом форуме посоветовали решение этой проблемы. Создается два контрола, один невидимый, который принадлежит диалогу, а мой контрол принадлежит этому невидимому контролу. Невидимый контрол слушает нотифи EN_CHANGE от моего контрола и перенаправляет их и обратно, и далее. Вот и все! Думаю тему мона закрыть!
 
Статус
Закрыто для дальнейших ответов.