Главная страница
    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.034 c
4-1080636512
Jul
2004-03-30 12:48
2004.05.16
Хороший help file или справочник по Win Api


14-1082647615
panov
2004-04-22 19:26
2004.05.16
Алгоритм перноса слов в строке.


1-1082810709
^G^
2004-04-24 16:45
2004.05.16
Как выводить значение параметра ключа???(работа с регистром).


1-1083080832
volser
2004-04-27 19:47
2004.05.16
Написание класса


1-1083187152
sensor
2004-04-29 01:19
2004.05.16
Popupmenu и ShellExecute





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