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

Вниз

Где грабли?   Найти похожие ветки 

 
SPeller ©   (2005-06-29 15:39) [0]

Подскажите, где ошибка? Есть такой код:

program IEImgSwitch;

{$R trayicon.res}

uses
 Windows, KOL, Messages;

var
 Msg: tagMsg;
 ThreadId: THandle;
 ExitFlag: Boolean;
 Tray: PTrayIcon;
 TrayWnd: PControl;
 Menu: PMenu;
 OnMenu: TOnMenuItem;

procedure ShowMenu;
var
 Pt: TPoint;
begin
 GetCursorPos(Pt);
 Menu.PopupEx(Pt.X, Pt.Y);
end;

procedure TrayMouse(Dummy: Pointer; Sender: PObj; Message: Word);
begin
 case Message of
   WM_LBUTTONDOWN, WM_RBUTTONDOWN:
     ShowMenu;
 end;
end;

procedure OnMenuHandler(Dummy: Pointer; Sender: PMenu; Item: Integer);
begin
 ShowMessage("ff");
end;

begin
 ExitFlag := False;

 PeekMessage(Msg, 0, WM_USER, WM_USER, PM_NOREMOVE);
 ThreadId := GetCurrentThreadId;
 PostThreadMessage(ThreadId, WM_NULL, 0, 0);

 TrayWnd := NewPanel(nil, esNone);
 //TrayWnd := NewLabel(nil, "");
 TrayWnd.ExStyle := WS_OVERLAPPED;
 TrayWnd.Style := 0;
 TrayWnd.Menu := 0;
 TrayWnd.CreateWindow;

 if (TrayWnd.Handle = 0) then begin
   ShowMessage(SysErrorMessage(GetLastError));
 end
 else begin
   Tray := NewTrayIcon(TrayWnd, LoadIcon(hInstance, "TRAYICON"));
   Tray.OnMouse := TOnTrayIconmouse(MakeMethod(nil, @TrayMouse));

   OnMenu := TOnMenuItem(MakeMethod(nil, @OnMenuHandler));
   Menu :=
     NewMenu(
       TrayWnd, 0, ["Enable images", "Disable images", "-", "Exit"], nil);
   Menu.AssignEvents(1, [OnMenu]);
   Menu.AssignEvents(2, [OnMenu]);
   Menu.AssignEvents(4, [OnMenu]);

   repeat
     WaitMessage;
     while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin
       ExitFlag := (Msg.message = WM_CLOSE);
       if ExitFlag then
         Break;
     end;
   until ExitFlag;
 end;

 Tray.Free;
 TrayWnd.Free;
end.


Проблема в том, что не вызываются обработчики меню. Толи лыжи не едут, толи я туплю, но понять причину не могу.


 
Thaddy   (2005-06-29 16:27) [1]

Maybe my rataler example will help.


 
SPeller ©   (2005-06-29 16:51) [2]

Thaddy   (29.06.05 16:27) [1]
Щас гляну.

Ещё забыл добавить - kol 2.08


 
SPeller ©   (2005-06-29 17:00) [3]

Всё, разобрался, это мой глюк - нужны были строчки
       TranslateMessage(Msg);
       DispatchMessage(Msg);
Из очереди-то я сообщения выбираю, а отправлять окну забыл :)


 
SPeller ©   (2005-06-29 17:27) [4]

Написал себе простинькую утилитку для включения/отключения отображения рисунков в IE, чтобы каждый раз не лазить в настройки. Программка сидит в трее. Лучше всего ставить ее в автозагрузку. Программка для тех, кто экономит трафик :)

http://speller.narod.ru/files/other/ieimgswitch.rar (15,4 КБ exe + src)


 
ECM ©   (2005-06-29 17:27) [5]

..я сразу увидел..что нет обработки сообщений...
Жаль что интернет обломился на час...не успел..:)
Пара замечаний - если уж нужен супер-минимальный размер модуля то будет работать (в объеме примера) и без TranslateMessage...
а так ИМХО можно вместо:
repeat
    WaitMessage;
    while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin
      ExitFlag := (Msg.message = WM_CLOSE);
      if ExitFlag then
        Break;
    end;
  until ExitFlag;


использовать   Run(TrayWnd) - а обработку завершения вынести в
OnMenu (OnMessage)



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

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

Наверх





Память: 0.46 MB
Время: 0.033 c
1-1137606165
Volf_555
2006-01-18 20:42
2006.02.19
Как извлечь иконку из *.exe и добавить в TImageList?


6-1131743288
Delphi_is_cool
2005-11-12 00:08
2006.02.19
Состояние сокета


6-1131019628
S46E
2005-11-03 15:07
2006.02.19
Сканирование открытых UDP портов


5-1125326744
Akris
2005-08-29 18:45
2006.02.19
Как отловить изменение property Text в компоненте-наследни TEdit


2-1138922506
promomix
2006-02-03 02:21
2006.02.19
Глюк ord на символе 26.





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