Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-44193
Reistlyn
2003-04-01 14:52
2003.04.14
Удаление данных из файла.


3-44023
korvin
2003-03-25 15:52
2003.04.14
Выбор нескольких позиций в объекте типа CheckListBoх из базы.


3-44019
off
2003-03-25 14:36
2003.04.14
Тип DATE в IB.


1-44218
Zew
2003-04-01 17:56
2003.04.14
Стиль windows xp


1-44158
Шишкин Илья
2003-04-03 16:13
2003.04.14
помогите с TColor





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский