пятница, 16 октября 2009 г.

Различные способы отправки (send) сообщений

Это перевод The various ways of sending a message. Автор: Реймонд Чен.

Существует несколько вариантов функции SendMessage, но некоторые из них являются просто частным случаем других.

Простейшим вариантом является сама функция SendMessage, которая отправляет (send) сообщение и ждёт ответа.

Следующий уровень - это функция SendMessageTimeout, которая отправляет сообщение и ждёт ответа лишь указанное время. SendMessage - это просто переходник для SendMessageTimeout с временем ожидания, равным INFINITE.

Другая версия SendMessage - это SendNotifyMessage, которая похожа на SendMessage за исключением того, что она не ждёт ответа. Она возвращает управление немедленно и игнорирует любой возвращаемый результат.

Последняя функция в стиле SendMessage - это SendMessageCallback. Она отправляет сообщение и возвращает управление немедленно. Когда принимающий наконец вернёт ответ, вызовется указанная функция обратного вызова (callback).

SendNotifyMessage это заглушка к SendMessageCallback с callback-функцией, которая просто ничего не делает.

Вот так четыре функции отправки сообщений уживаются вместе.

Бонус-примечание: если вы используете любую из вышеуказанны функций для отправки сообщения в окно, принадлежащее текущему потоку, то вызов будет синхронным.

Прим.переводчика: SendNotifyMessage - это не то же самое, что PostMessage. Функции семейства SendMessage производят отправку (send) сообщений - т.е. прямой вызов оконной процедуры. Это не то же самое, что посылка (post) сообщения, при котором сообщение ставится в очередь.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.