Главная страница
    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.042 c
2-1138559162
snykers
2006-01-29 21:26
2006.02.19
как изменить index у treenode


2-1138731187
Arazel
2006-01-31 21:13
2006.02.19
Error: Ambiguous colum name C_Cost (ADOTable.SQL)


2-1139124884
wany
2006-02-05 10:34
2006.02.19
отбор данных за период


15-1138036328
Loginov Dmitry
2006-01-23 20:12
2006.02.19
А что лучше Perl или PHP


2-1139080529
ПОМОГИТЕ
2006-02-04 22:15
2006.02.19
нету темы





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