Форум: "WinAPI";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизЦикл выборки сообщений в безоконном приложении Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c