| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Приём сообщений |
| Автор: Zmiy 3.3.2007, 17:49 | ||||
Объясните, пожалуйста, чем отличается
от
. |
| Автор: MetalFan 3.3.2007, 18:23 |
| на мой взгляд разницы особой нет. разве что принято все-таки использовать GetMessage в цикле выборки сообщений... ну и оба примера содержат по крайней мере одну ошибку. разницу между Peek и Get Message знаешь? на всякий случай: You can use the PeekMessage function to examine a message queue during a lengthy operation. PeekMessage is similar to the GetMessage function; both check a message queue for a message that matches the filter criteria and then copy the message to an MSG structure. The main difference between the two functions is that GetMessage does not return until a message matching the filter criteria is placed in the queue, whereas PeekMessage returns immediately regardless of whether a message is in the queue. по поводу ошибки - никак не анализируется ложный вариант(0) значения функции GetMessage... который означает, что в из очереди извлечено сообщение WM_QUIT... и надо бы заверщить приложение(цикл выборки). ну и замчание - ...if GetMessage() = True... зачем сравнение с True? |
| Автор: Zmiy 4.3.2007, 17:04 |
| В общем, спасибо, вопрос снят, похоже, что первый код использовать просто бессмысленно. |
| Автор: Elfix 5.3.2007, 05:30 | ||
| А у меня возникла такая проблема. Обработка сообщений идет в цикле GetMessage. Но перед запуском цикла у меня создается компонент IdIRC. Компоненту я задаю событие OnMessage. Но при запуске программы код внутри процедуры обработки события OnMessage не возникало. Кто то подсказал мне, что это гдюк Delphi и чтобы все работало нужно программу запускать непосредственно из проводника, а не по нажатию на F9 в Delphi. Но даже такой способ запуска не решил проблему. Мой код:
|
| Автор: MetalFan 5.3.2007, 08:35 | ||
и вообще отдельную тему заведи |