![]() |
eXeL@B —› Вопросы новичков —› WinMain |
Посл.ответ | Сообщение |
|
Создано: 26 августа 2007 18:55 · Личное сообщение · #1 Может я туплю, но как можно ещё ловить Window Messages - вот пример, в программе SetTimer без процедуры, но с HWND окна программы, в таймере дан ID, при перехвате WinMain по таймеру не вызывается, но как то же ловится они - в коде вижу DispatchMessage/GetMessage , но к участку стэка обращения нету кроме как записи туда сообщений! Как ещё может программа перехватывать сообщения от таймера? И как лучше ловить все сообщения окну, точнее чем? ![]() |
|
Создано: 27 августа 2007 06:48 · Личное сообщение · #2 |
|
Создано: 27 августа 2007 09:58 · Поправил: Dr3d · Личное сообщение · #3 Вот так можно переназначить функцию WndProc (В функции MyWndProc обрабатываем всё что нада, а потом вызываем WndProc, чтоб она обработала всё остальное) // При закрытии окна вылезет сообщение с текстом "Close"
![]() |
|
Создано: 27 августа 2007 10:24 · Личное сообщение · #4 |
|
Создано: 30 августа 2007 23:49 · Личное сообщение · #5 |
|
Создано: 31 августа 2007 10:11 · Личное сообщение · #6 John Freeman пишет: Но всё же непонятно как программа то отрабатывает собственно сообщения... Как и все, в обработчике сообщений. Адрес функции обработчика задается в структуре WNDCLASSEX После чего регистрируется класс функцией RegisterClassEx на основе этой структуры (т.е. в момент регистрации можно узнать функцию обработчика) И создается окно функцией CreateWindow(Ex) Функцию обработчика сообщений можно подменить своей функцией. Код я дал выше. На счет таймера: Если таймер не имеет собственной функции обработки сообщений, как ты и сказал, то сообщения посылаются в обработчик окна HWND (тип сообщения WM_TIMER, в параметрах указывается ID таймера) John Freeman пишет: при перехвате WinMain по таймеру не вызывается WinMain - это функция начала приложения (почти начала, отсюда идет код, написаный программером), она вызывается один раз и к обработке сообщений она отношения не имеет. Возможно ты имел в виду WndProc.. ![]() |
|
Создано: 31 августа 2007 13:32 · Поправил: SergX · Личное сообщение · #7 Вот может пригодится кому... uses Windows;
![]() |
|
Создано: 01 сентября 2007 00:06 · Личное сообщение · #8 |
|
Создано: 01 сентября 2007 00:08 · Личное сообщение · #9 |
![]() |
eXeL@B —› Вопросы новичков —› WinMain |