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

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

Timer & Messages BUG !!!


Страницы:   1 2

AndreyRus ©   (2006-09-11 04:55:00) 

Я обнаружил, что сообщение (возможно не только WM_POWERBROADCAST) обрабатывается дважды, если в программе используется таймер.

function TForm1.KOLForm1Message(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
 Result:= false;
 if Msg.message = WM_POWERBROADCAST then
 begin
   MsgOk('APM Event detected - ' + UInt2Str(Msg.wParam));
   result:= true;
 end;
end;


AndreyRus   (2006-09-30 04:51:00) [21]


> Владимир, не могли бы Вы описать диспечеризацию событий
> в КОЛ?

И какое отношение к нему имеет таймер?


AndreyRus   (2006-09-27 22:09:00) [22]


if Msg.message = WM_POWERBROADCAST then
 begin
   MsgOk('APM Event detected - ' + UInt2Str(Msg.wParam) + '. hWnd - ' + UInt2Str(Msg.hwnd));
   result:= true;
 end;


Msg.hwnd отличается.
Владимир, не могли бы Вы описать диспечеризацию событий в КОЛ?


Vladimir Kladov   (2006-09-27 15:59:00) [23]

Тогда проверьте отправителя в Msg.hwnd. Видимо, оно приходит нескольким окнам в приложении, но у нас Applet ловит все сообщения, от всех окон.


AndreyRus   (2006-09-27 04:40:00) [24]


> в VCL смотрели?

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure PWRSUSPENDRESUME (var Message: TMessage); message WM_POWERBROADCAST;
   procedure Timer1Timer(Sender: TObject);
 end;

procedure TForm1.PWRSUSPENDRESUME (var Message: TMessage);
begin
 ShowMessage('APM Event detected - ' + IntToStr(Message.wParam));
end;

Попробовал.... Ошибки нет.


> Вообще-то, это широковещательное оповещение. Не факт, что
> оно должно приходить ровно 1 раз.

Несогласен.


> А вы его на форме ловите? Может, лучше на Applet'е.

Попробовал... Вообще прикол - сообщение приходит 3 раза.


Vladimir Kladov   (2006-09-26 15:14:00) [25]

в VCL смотрели?
Вообще-то, это широковещательное оповещение. Не факт, что оно должно приходить ровно 1 раз. А вы его на форме ловите? Может, лучше на Applet'е.


AndreyRus   (2006-09-25 22:03:00) [26]

Люди добрые, да помогите! Подскажите, где копать?


AndreyRus   (2006-09-15 14:27:00) [27]

Делал, конечно. Все равно приходит два события.


homm   (2006-09-15 06:13:00) [28]


> MsgOk('APM Event detected - ' + UInt2Str(Msg.wParam));

Замени на запись лога в файл, если все равно 2 записи будет, тогда есть о чем говорить.


AndreyRus   (2006-09-15 00:31:00) [29]


> А ты уверен, что это сообщение идет не двум разным объектам,
>  а одному?

Вы хотите сказать, что Windows посылает сообщения как окну, так и таймеру? :)


Unknown Mystic   (2006-09-14 11:01:00) [30]

А ты уверен, что это сообщение идет не двум разным объектам, а одному?
Если не ошибаюсь, то, например, форма получает и все сообщения идущие объектам на ней...


AndreyRus   (2006-09-14 10:56:00) [31]

Уважаемый Владимир Кладов, пожалуйста, обратите внимание на эту тему.


Страницы:   1 2

Наверх

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