Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Подскажите почему не работает? Applet.OnMessage   Найти похожие ветки 

 
APXi ©   (2003-11-25 02:15) [0]

Вот код.
При создании приложения как я понимаю должны выдаваться сообщение "WM_Create", соответсвенно при завершении "WM_DESTROY", а ничего нету, почему?

program test;
uses
 windows,
 messages,
 kol;

Var
 frmProperties : PControl;
 Panel : pControl;
 Tray : pTrayIcon;
 Menu : pMenu;

 // ==============================================================
 procedure MyMessageBox(str:String);
 begin
   MessageBox(applet.Handle, PChar(Str), "Message", mb_ok);
 end;

 // ===================================================================
 procedure OnClickPopupMenu(Dummy : pointer; Sender : pMenu; Item : Integer);
 begin
   case Item of
     0: Applet.Close();
   end;{case}
 end;

 // ===================================================================
 Function OnAppletMessage(Self: PObj; var Msg: TMsg; var Rslt: Integer):Boolean;
 begin
   case Msg.message of
     WM_Create: MyMessageBox("WM_Create");
     WM_DESTROY: MyMessageBox("WM_DESTROY");
     WM_MOVE: MyMessageBox("WM_MOVE");
   end;
   Result := true;
 end;

 // ===================================================================
 procedure OnClickTray(dummy:pointer; sender:Tobject; Message:Word);
 var P:Tpoint;
 begin
   if message = WM_LBUTTONUP then
   begin
     GetCursorPos(p);
     Menu.PopUp(p.x,p.y);
   end;
 end;

begin
 Applet := NewApplet("");
 frmProperties:=NewForm(Applet, "");
 panel := NewPanel(Applet, esNone);
 Menu := NewMenu(Panel, 0, ["Выход"], TOnMenuItem(MakeMethod( nil, @OnClickPopupMenu)));

 Tray := NewTrayIcon(Panel, frmProperties.Icon);
 Tray.OnMouse := TOnTrayIconMouse(Makemethod(nil, @OnClickTray));

 Applet.OnMessage := TOnMessage(Makemethod(nil, @OnAppletMessage));
 Run(frmProperties);
end.


 
Fktrc ©   (2003-11-25 06:15) [1]

По-моему функцию обработки сообщений в твоем случае полагается писать так

Function OnAppletMessage(Self: PObj; var Msg: TMsg; var Rslt: Integer):Boolean;
begin
  Result := false; // !!!!
  case Msg.message of
    WM_Create: MyMessageBox("WM_Create");
    WM_DESTROY: MyMessageBox("WM_DESTROY");
    WM_MOVE: MyMessageBox("WM_MOVE");
  end;
end;


 
azsd ©   (2003-11-25 06:59) [2]

yes Result point whether you processed the message,
so I think it is better to add Result:=True; after call each MyMessagebox.


 
SPeller ©   (2003-11-25 09:17) [3]

1) В обработчике сообщения должно стоять Result := False; для того чтобы щла дальшейшая обработка этого сообщения. В твоём же случае ты отлавливаешь и не пускаешь дальше все сообщения, которые доходят до AppletOnMessage.
2) WM_CREATE не приходит потому что окно аплета создаётся у тебя раньше назначения обработчика.
3) Вероятно, что из-за того что ты отлавливаешь все сообщения без разбору не приходит и WM_DESTROY. Либо, обработчик сообщений отключается при появлении этого сообщения и вызывается какой-нить OnClose или OnDestroy.


 
APXi ©   (2003-11-25 19:10) [4]

Все равно не идет.


 
Vladimir Kladov   (2003-11-25 20:33) [5]

Run(frmProperties);
почему не Run(Applet); ? Как он будет ловить сообщения вообще?


 
APXi ©   (2003-11-26 20:52) [6]

Спасибо. Работает.



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

Форум: "KOL";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.029 c
3-1082081449
Slavik_v
2004-04-16 06:10
2004.05.16
Как поменять цвет определенной строки в DBGrid?


3-1082354187
Top100
2004-04-19 09:56
2004.05.16
Оптимизация


14-1082971109
Igorek
2004-04-26 13:18
2004.05.16
А давайте поговорим,


6-1080475939
iudjen
2004-03-28 16:12
2004.05.16
как скачать файл с интернета


1-1083727727
russko
2004-05-05 07:28
2004.05.16
Многоуровневый выпадающий список





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский