Вниз
Скачать: CL | DM;

PeekMessage & GetMessage   Найти похожие ветки 

← →
KPV-10k ©   (2002-05-24 21:36) [0]

Люди! Есть такая проблема: при запуске моей программы под ядром NT она начинает "пожирать" ресурсы системы... таким образом, что с каждой секундой она на это величину времени увеличивает квант времени выделяемый процессу, таким образом всё это приводит к тому, что остальные процессы не обрабатываются...

Вот ядро моего проекта:


while GetMessage(Msg, HInstance, 0, 0) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;


В справке, нашел, что это баг и там есть такой код:

// This PeekMessage loop will NOT let the system go idle.
for( ;; )
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
return TRUE;

TranslateMessage(&msg);
DispatchMessage(&msg);
}
BackgroundProcessing();
}


Короче, на Делфи перевел его так:

while true do begin
while PeekMessage(Msg, HInstance, 0, 0, PM_REMOVE) do
begin
if msg.message = WM_QUIT then ExitProcess(ExitCode);
TranslateMessage(msg);
DispatchMessage(msg);
WaitMessage();
end;
//BackgroundProcessing(); <-НО ЭТОЙ Ф-ЦИИ НЕТ!!!
end;


Вот я и спрашиваю: как можно сделать правильный обработчик событий? Чтобы рульно работало...


← →
Ales ©   (2002-06-21 08:35) [1]

Не уверен, но вроде так (это для сервиса !!!):

while not Terminated do begin
while PeekMessage
....
end;
ServiceThread.ProcessRequests(True);
end; /// end while true




← →
Юрий Зотов ©   (2002-06-21 13:32) [2]

Использую тот же самый цикл с GetMessage(Msg, 0, 0, 0).
Ничего лишнего не жрет. А почему HInstance? Это же хэндл модуля, а не окна. И в PeekMessage то же самое.


← →
Игорь Шевченко ©   (2002-06-21 14:11) [3]

В таком виде (GetMessage(Msg, HInstance, 0, 0)), по идее вообще ничего не должно придти, так как сообщений с HWND=HInstance у потока, очевидно, нет).
Странно все это :-)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.009 c
3-84903
Nonam
2002-08-06 14:14
2002.08.26
Characterset for


1-85044
Andrey Shakula
2002-08-14 11:06
2002.08.26
dsgnintf.pas


1-85080
kerkonst
2002-08-14 11:16
2002.08.26
Подсветка синтаксиса С++


1-84971
Bartik
2002-08-15 16:23
2002.08.26
Как создать Help`арь?


14-85185
monomah
2002-07-30 16:05
2002.08.26
Показ RTF с картинками




   Наверх