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

Вниз

Чем отличается 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-89327
satron
2003-10-16 16:01
2003.10.27
Как выделить строку в RichEdit зная только ее номер ???


7-89608
Noname_
2003-08-12 11:45
2003.10.27
Как запускать chkdsk при каждом старте Windows?


6-89447
SergeyS
2003-09-02 16:32
2003.10.27
Почтовый сервер


1-89385
Checist [root]
2003-10-15 13:54
2003.10.27
Загрузка изображений в Image


1-89247
XAMLO
2003-10-14 20:16
2003.10.27
Ошибка сохранения файла!?