Главная страница
    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.037 c
9-1072459859
Ландграф Павел
2003-12-26 20:30
2004.05.16
PowerDraw3 загрузка текстуры из TStream


14-1082629525
Frozzen
2004-04-22 14:25
2004.05.16
Вопросик


1-1083047567
basken
2004-04-27 10:32
2004.05.16
Как принудительно показать хинт контрола?


1-1083345148
Learner
2004-04-30 21:12
2004.05.16
Корректное уничтожение формы.


3-1081976637
Coder
2004-04-15 01:03
2004.05.16
Загадочный вопрос по SQL (ХП)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский