Форум: "Потрепаться";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
ВнизОбработка сообщений в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c