Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с циклом выборки сообщений


Страницы:   1 2

SPeller ©   (2009-12-21 05:10:00) 

Всем доброго времени суток!
Задача - при выполнении метода не возвращать управление в основной цикл выборки сообщений, а запустить свой цикл по фильтру пока не придет определенное сообщение. Наподобие того, как работает цикл модальной формы. Только мне нужно выхватывать из цикла не все сообщения, а только одно определенное. Код такой:


const
 AM_MARSHAL          = WM_USER + 51;

function ...
var
 msg: TMsg;
 doLoop, retReceived: Boolean;
 requestID: Cardinal;
begin
...
     doLoop := True;
     retReceived := False;
     while doLoop do
     begin
       while
         not retReceived and
         PeekMessage(msg, 0, AM_MARSHAL, AM_MARSHAL, PM_REMOVE or PM_NOYIELD) do
       begin
         // условие нормального возврата из цикла
         retReceived :=
           not proxyApt.ProcessMarshalMsg(msg.wParam, msg.дParam) and
           (PAptMarshalData(msg.wParam).ID = marshalData.ID);
       end;
       doLoop :=
         not retReceived and doLoop and
         not PeekMessage(msg, 0, WM_QUERYENDSESSION, WM_QUIT, PM_NOREMOVE or PM_NOYIELD);
       if doLoop then
         doLoop := WaitMessage;
     end;
...
end;


Проблема в том, что WaitMessage не ждет новых сообщений и возвращается сразу же, в результате цикл гоняется непрерывно, полностью загружая процессор. Хотя в мсдн написано что она должна возвращаться только тогда, когда приходят новые сообщения, вне зависимости от количества оных в очереди на момент ее вызова. Отладчиком проскакиваю вызов WaitMessage без каких-либо задержек. Что делать, как исправить - не пойму... Подскажите, куда копать?


brother   (2009-12-21 05:15:00) [21]

> Отладчиком проскакиваю вызов WaitMessage без каких-либо
> задержек

sleep(1) ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо