понедельник, 19 апреля 2010 г.

Вы можете вызывать MsgWaitForMultipleObjects без описателей

Это перевод You can call MsgWaitForMultipleObjects with zero handles. Автор: Реймонд Чен.

Не существует функции WaitMessageTimeout, но вы можете создать её сами при помощи функции MsgWaitForMultipleObjects:
function WaitMessageTimeout(const dwTimeout: DWORD): Boolean;
begin
  Result := (MsgWaitForMultipleObjects(0, nil, False, dwTimeout, QS_ALLINPUT) = WAIT_TIMEOUT);
end;
Чтобы ожидать сообщения с таймаутом, мы используем MsgWaitForMultipleObjects в вырожденном смысле: вы передаёте список объектов, которых нужно ждать, равно как и задержку и состояние очереди, прося этим функцию вернуть управление, когда любой из объектов перейдёт в сигнальное состояние или же придёт сообщение. Но если вы не передадите объекты, то единственное, что останется функции, - это ждать сообщения.

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

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

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

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

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

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

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

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

Примечание. Отправлять комментарии могут только участники этого блога.