система оконных сообщений
От: Аноним  
Дата: 29.08.05 14:17
Оценка:
Всем большой привет!
Для меня настал момент, когда надо с subj разобраться окончательно.
Как идут сообщения до оконной процедуры. Все время считал, что идет сразу к тому окну, куда его (сообщение) послали. Так иль не так?
Если в начале идет к родителю, а потом к child-окну, то где именно происходит эта смена направления. Не ужели в ::DispatchMessage() того самого цикла у потока:
while (::GetMessage(&msg,0,0,0))
{
   ::DispatchMessage(&msg);
}

Кто может ткнуть на ссылочку или книгу где можно подробно об этом почитать.
Спасибо.
Re: система оконных сообщений
От: kmn Украина  
Дата: 29.08.05 14:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем большой привет!

А>Для меня настал момент, когда надо с subj разобраться окончательно.
А>Как идут сообщения до оконной процедуры. Все время считал, что идет сразу к тому окну, куда его (сообщение) послали. Так иль не так?
В общем случае так! В Win32 функция DispatchMessage просто пренаправляет вызов в оконную процедуру.
Но дело в том, что между вызовами функции GetMessage и DispatchMessage извлеченое сообщение можно: отфильтровать, изменить, перенаправить другому окну, ...
Да, и еще, важно как это сообщение посылается, если при помощи функции SendMessage и в том же потоке в котором создано окно, то это сообщение попадает сразу в оконную процедуру и цикл обработки сообщений никак не может на это повлиять.
И почитать об этом можно у Рихтера "Windows для проффесионалов", если я не ошибаюсь.
Re[2]: система оконных сообщений
От: Аноним  
Дата: 29.08.05 15:12
Оценка:
Здравствуйте, kmn, Вы писали:

[skip]
Спасибо. А как же работает Spy++, например галочки в окне "Message Options": Parent Window и Child Window. Spy++ что-ли в этом случае "встраивается" в родителя и во все дочерние окна?
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.