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

Вниз

Цикл выборки сообщений в безоконном приложении   Найти похожие ветки 

 
Aldor_   (2004-07-11 12:35) [0]

Если у меня безоконное приложение, то надо ли в цикле выборки сообщений (while GetMessage(WinMessage, 0, 0, 0) do) писать TranslateMessage и DispatchMessage, ведь вроде некому диспатчить-то.


 
Anatoly Podgoretsky ©   (2004-07-11 13:12) [1]

Отсюда мораль - сделай окно


 
Aldor_   (2004-07-11 13:22) [2]

Anatoly Podgoretsky ©   (11.07.04 13:12) [1]

 А смысл? Серьезно, зачем делать окно, если оно никак не будет использоваться, разве что для того, чтобы было кому диспатчить? :)))))


 
Piter ©   (2004-07-11 14:58) [3]

нет, не надо писать.

Да и вообще, если приложение безоконное - то нафига вообще мучиться с выборкой сообщений? :)

Что интересно делает твое безоконное приложение? :)


 
Piter ©   (2004-07-11 15:00) [4]

Вообще приложении без окна... зачем оно?


 
Aldor_   (2004-07-11 15:30) [5]

Piter ©

 ИМХО, безоконные приложения вполне обычны - сидит резидентом, выполняет свои функции, выборка сообщений - ловить WM_TIMER, например.

 Но мне просто интересно, что будет делать DispatchMessage, если ему отдать "ThreadMessage".
 Тоже самое TranslateMessage: могут ли вообще приходить клавиатурные сообщения безоконному приложению в обычных случаях (кроме тех, когда такое сообщение шлется специально).
 Вроде бы ответ очевиден, но включается "а Гейтс его знает", вот и удостоверяюсь.


 
Piter ©   (2004-07-11 16:47) [6]

Aldor_   (11.07.04 15:30) [5]
сидит резидентом, выполняет свои функции


вот и интересно - какие такие функции, а? :)


Но мне просто интересно, что будет делать DispatchMessage

Ничего не будет делать. Ты же ему передаешь структуру TMsg, а там прописан Handle окна. В случае Thread Message там будет 0. Соответственно, DispatchMessage никуда не будет перенаправлять данное сообщение. Вот и все.


могут ли вообще приходить клавиатурные сообщения безоконному приложению в обычных случаях

не могут. Безоконному приложению вообще не будут приходить никакие сообщения, если не "попросить" систему об этом.


 
Anatoly Podgoretsky ©   (2004-07-11 17:09) [7]

Aldor_   (11.07.04 13:22) [2]
Для того чтобы принимать сообщения


 
jack128 ©   (2004-07-11 17:28) [8]


> вот и интересно - какие такие функции, а? :)
FBServer, например..


 
Igorek ©   (2004-07-11 17:53) [9]


> Безоконному приложению вообще не будут приходить никакие
> сообщения, если не "попросить" систему об этом.

А как, если не секрет?


 
jack128 ©   (2004-07-11 19:55) [10]


> А как, если не секрет?
PortThreadMessage


 
Sha ©   (2004-07-11 22:04) [11]

> Если у меня безоконное приложение, то надо ли в цикле выборки
> сообщений (while GetMessage(WinMessage, 0, 0, 0) do) писать
> TranslateMessage и DispatchMessage, ведь вроде некому диспатчить-то.

Нет, не надо. Можешь прямо в цикле обработать сообщения, посланные, например, при помощи PostThreadMessage или от таймера, созданного в контексте потока. Учти, что все сообщения, посланные до первого GetMessage будут потеряны.


 
Aldor_   (2004-07-12 04:23) [12]

> Piter ©   (11.07.04 16:47) [6]
вот и интересно - какие такие функции, а? :)

Периодическая проверка инсталленного софта и его версий, при логоне - проверка устройств. При наличии изменений - сигнализация серверу.

> DispatchMessage никуда не будет перенаправлять данное сообщение. Вот и все.

 Вот в этом и хотел удостоверится. И, елис не секрет, откуда такая инфа (хотя я, конечно, понимаю, что все это тривиально).

Anatoly Podgoretsky ©   (11.07.04 17:09) [7]
> Для того чтобы принимать сообщения

 А разве обязательно для этого окно? Или Вы шутите? :)))))

Sha ©   (11.07.04 22:04) [11]
> Учти, что все сообщения, посланные до первого GetMessage будут потеряны.

 Вот это интересно, а какие это могут быть сообщения? И, кстати, разве нет такого понятия, как _очередь_ сообщений?


 
Sha ©   (2004-07-12 07:55) [13]

> кстати, разве нет такого понятия, как _очередь_ сообщений?

Для треда это понятие появляется после сделанной им первой попытки выбрать сообщения из очереди :)


 
Sha ©   (2004-07-12 07:59) [14]

> а какие это могут быть сообщения?

Это те сообщения, которые ты успел послать треду до его перехода в цикл выборки сообщений.


 
Sha ©   (2004-07-12 08:07) [15]

>> DispatchMessage никуда не будет перенаправлять данное сообщение. Вот и все.

> Вот в этом и хотел удостоверится.

Кстати, чтобы DispatchMessage перенаправлял сообщения созданному тобой окну, ты можешь ручками в hwnd приятого сообщения исправить 0 на нужный хэндл. Так удобно делать, если все-таки захочешь создать окно. Вся логика будет в одном месте :)

Для потомка TThread еще можно использовать просто Dispath, чтобы вызывать его методы обработки сообщений.


 
Aldor_   (2004-07-12 08:18) [16]

> Это те сообщения, которые ты успел послать треду до его перехода в цикл выборки сообщений.

 А только ли я? Мой вопрос состоял в том, что не шлет ли система каких-либо сообщений треду?

Sha ©   (12.07.04 07:59) [14], [15]
 Сэнкс за рязъяснения.


 
Sha ©   (2004-07-12 09:42) [17]

> Мой вопрос состоял в том, что не шлет ли система каких-либо сообщений треду?

Не шлет.


 
Aldor_   (2004-07-12 11:08) [18]

Угу, еще раз сэнкс.


 
Alex Konshin ©   (2004-07-12 11:12) [19]

Piter ©   (11.07.04 16:47) [6]
Ты заблуждаешься. Для приема сообщений необязательно наличия окна. Дело в том, что сообщение можно послать нити, и неважно, есть ли окно, связанное с ней или нет.
К вопросу о том, зачем это может быть нужно: посмотри, как работают с Winsock 1.x.



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

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

Наверх




Память: 0.51 MB
Время: 0.028 c
3-1091024994
MORA
2004-07-28 18:29
2004.08.22
корректно ли я использую транзакции?


1-1091721922
mouse_web
2004-08-05 20:05
2004.08.22
Как узнать разрешение экрана


3-1091096694
avs
2004-07-29 14:24
2004.08.22
Fastreport - программно изменить ориентацию страницы.


3-1090221921
Ani
2004-07-19 11:25
2004.08.22
Надо так сделать что при Preview в QuickReport е отабражался толк


8-1086518415
Progus
2004-06-06 14:40
2004.08.22
Как в компоненте TChat вывести по оси Y текст