Главная страница
    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.046 c
2-1138786269
Kolan
2006-02-01 12:31
2006.02.19
Приведение типов массивов...


15-1138290638
Andy BitOff
2006-01-26 18:50
2006.02.19
Установка GDIplus под D2005 - проблемы.


2-1139060963
BaBayka007
2006-02-04 16:49
2006.02.19
Что-то я совсекм затупил......подскажите плиз....


2-1138892204
Silver__Dragon
2006-02-02 17:56
2006.02.19
Перехват нажатия Minimize


15-1138476997
syte_ser78
2006-01-28 22:36
2006.02.19
dma для dvd





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