Форум: "Система";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизЧем отличается PostMessage от SendMessage. Найти похожие ветки
← →
IGORYOK (2003-08-12 21:39) [0]Чем отличается PostMessage от SendMessage. раньше я считал, что ни чем, но когда проверил оказалось одна (первая) передаёт между приложениями сообщения, а вторая нет. Так как же для чего они
← →
jack128 (2003-08-12 23:03) [1]The SendMessage function sends the specified message to a window or windows. The function calls the window procedure for the specified window and does not return until the window procedure has processed the message. The PostMessage function, in contrast, posts a message to a thread"s message queue and returns immediately.
← →
Yanis (2003-08-12 23:11) [2]А вот перевод, по сути одно и тоже:
http://delphimaster.net/view/7-1060709982/
← →
jack128 (2003-08-12 23:16) [3]
> Yanis © (12.08.03 23:11) [2]
Оригинал полезней!! -))
← →
Yanis (2003-08-12 23:22) [4]To [3]
Не все же полиглоты, как ты или я. Я нехочу никого обидеть но не все смогут перевести. Хотя ты прав, оригинал есть оригинал.
← →
Digitman (2003-08-13 08:51) [5]
> когда проверил оказалось одна (первая) передаёт между приложениями
> сообщения, а вторая нет
ничего подобного
SendMessage() - синхронная передача сообщения, с ожиданием результата. Вызывающий кодовый поток блокируется на исполнении этой ф-ции до тех пор, пока не получит тот или иной результат : либо результат обработки сообщения оконной ф-цией в целевом кодовом потоке, либо отказ (целевое окно задано неверно, еще/уже не существует и т.п.) со значением результата = 0.
PostMessage() - асинхронная передача сообщения, без ожидания результата (возврат результата обработки сообщения целевой оконной ф-цией здесь не предусмотрен). Вызывающий код.поток не блокируется на исполнении ф-ции, получает управление сразу же после попытки постановки посылаемого сообщения в очередь сообщений целевого окна. Результат исполнения ф-ции = True, если сообщение успешно поставлено в целевую очередь, False - иначе.
← →
Verg (2003-08-13 09:05) [6]
> Digitman © (13.08.03 08:51) [5]
К этом можно добавить еще маленькую деталь:
sendmessage приводит к прямому вызову функции обработки сообщений целевого объекта, кроме случаев, когда поток отправляет сообщение (SendMessage) окну, которое ему не принадлежит (было создано другим потоком). В этом случае происходит как бы смешанный вариант (post-send)message, очередь сообщений ЦО переводится в специальное состояние, а вызывающий поток блокируется до тех пор, пока ЦО не обратится к своей очереди сообщений, в этот момент и происходит обработка того самого сообщения и происходит в контексте потока ЦО. На этом механизме и основан принцип синхронизации потоков наследников TThread из модуля classes, а именно метод synchronize.
← →
Digitman (2003-08-13 10:14) [7]
> Verg
мне это известно не хуже чем тебе)
рискни растолковать это автору)
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.021 c