Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.14;
Скачать: CL | DM;

Вниз

Обработка сообщений в Windows   Найти похожие ветки 

 
Top Gun   (2003-03-31 00:40) [0]

Люди, вот почитав Пачеко и Тейксера про обработку сообщений в windows, осталось много неясностей.

Ощущение, что авторы многое опускает. Помогите разобраться.

1) Итак, если отойти от VCL, получается, что в каждой программе есть класс TWNDClass

В котором параметр lpfnWndProc указывает на функцию, получающую все сообщения, адресованные приложению. Если тип сообщения подразумевает ответ, то оно возвращается в Result этой функции.
Также есть defwindowproc, которая обрабатывает больщую часть стандартных сообщения для приложения.

Сразу вопрос - а что, если в приложении сделать два TWNDClass класса и каждому назначить lpfnWndProc ?
a) Что тогда будет происходить ?

б) У меня уверенность, что и здесь Дельфи сильно облегкчает работу. Неужели создание приложения чисто на WinApi в VC происходит точно также ?

в) Читая ветви на этом сайте наткнулся на процедуры, типа PeekMessage, которые вроде как служать для выборки сообщений из очереди. Ничего не понимаю, даже программируя на чистом WinApi я не использую эти функции... почему ?

2) Вышеприведенное это полбеды. А если учитывать VCL ?

Если вот просто создать новый Application, пустая форма. Откомпилировать.
a) Где там этот самый TWNDClass и lpfnWndProc ?

б) Самый объемный вопрос. Как происходит обработка сообщения при использовании VCL ? Где используются записи TMessage, где TMsg, что за ProccessMessage такое? Где обрабатываются сообщения требующие ответа и где не требующие... что за DefaultHandle?
Как понимаю, все равно все сообщения приходят в главную функцию программы, определенную lpfnWndProc (все это скрыто в дебрях VCL). А потом, куда они перенаправляются ? Какой путь проходят ? В книжке все не очень подробно. Начинается словами:
"Любое сообщеие windows, посланное без требования получения результатов обработки, первоночально обрабатывается методом Application.ProccessMessage()"
Ну как понимаю это уже надстройки VCL. А первоночально, начиная от lpfnWndProc, что происходит ?

в) Цитата: " Для обработки сообщений, посылаемых с требованием предоставления результатов их обработки, неявно вызывается функция API Win32 DispatchMessage()"

Хм. Вот когда я писал на чистом Win32Api я не вызывал никакой DispatchMessage. Ведь можно просто вернуть результат в функции на которую ссылается lpfnWndProc.

Огромная просьба ответить по пунктам (особенно, конечно, пункт 2б).

Заранее спасибо !


 
Palladin ©   (2003-03-31 00:45) [1]

ну и что?
каждые 10 минут будем сообщения дублировать?



Страницы: 1 вся ветка

Текущий архив: 2003.04.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
3-44053
RDA
2003-03-24 14:09
2003.04.14
Ищу замену ADO


1-44206
NAlexey
2003-04-01 16:16
2003.04.14
SelLength и SelStart при изменении Text в TEdit.


1-44107
msgipss
2003-04-02 20:13
2003.04.14
Можно ли ??? Работать с объектом ListBox из другого приложения


6-44303
Translator
2003-02-21 11:44
2003.04.14
связь Delphi с Excel


1-44247
Tayfun
2003-04-02 13:08
2003.04.14
Как из сроки S вырезать символы