Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

реакция иконки на мышь...   Найти похожие ветки 

 
гном1   (2004-07-24 07:51) [0]

Ув. Мастера, помогите!

Как сделать, чтобы мои иконка вTray реагировала на мышь.

Я поместил иконку в трай:

procedure TForm1.Button11Click(Sender: TObject);
var
 no: TNotifyIconData;
 Hicon1: HIcon;    
begin
 HIcon1:=ExtractIcon(Handle,s,0);
 with no do
 begin
   cbSize:=Sizeof(TNotifyIconData);
   Wnd:=Handle;
   uID:=0;
   UFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
   SzTip:="Traybar Tip";
   HIcon:=HIcon1;
   uCallBackMessage:=WM_USER+0;
 end;
 Shell_NotifyIcon(NIM_ADD,@no);
end;

а как теперь сделать, чтобы она реагировала на мышь, например, чтобы при двойном щелчке по кнопке, запускала программку…

Нужен код, желательно с пояснением, please! Заранее спасибо!


 
Konoko ©   (2004-07-24 10:46) [1]

А не легче использовать уже готовый компонент ?
Вот типа такого?

http://mihandelphi.narod.ru/components/trayicon.zip

Али на АПИ пишешь?


 
гном1   (2004-07-24 11:40) [2]

to konoko
В том то и дело.
Мне нужно на API...


 
Konoko ©   (2004-07-24 11:47) [3]

> гном1

Что то типа этого ?

function WindowProc(Wnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
var
 dcMem, DC: HDC;
 bmpOld, bmp: HBITMAP;
 Paint: TPaintStruct;
begin
 Result := 0;
 if Msg = UM_TRAYICON then
 begin
   case LParam of
     WM_LBUTTONDBLCLK: begin
       ShowWindow(Wnd, SW_SHOW);
       OpenIcon(Wnd);
       EnableMenuItem(ContextMenu, ID_MENUMINIMIZE, MF_ENABLED);
       EnableMenuItem(ContextMenu, ID_MENURESTORE, MF_GRAYED);
       Shell_NotifyIcon(NIM_DELETE, @nid);
     end;
     WM_RBUTTONDOWN: begin
       GetCursorPos(pt);
       TrackPopupMenuEx(ContextMenu, TPM_LEFTBUTTON,
                        pt.x, pt.y, Wnd, nil);
     end;
   end;
 end else
 case Msg of
   WM_CREATE: begin
     UM_TRAYICON := RegisterWindowMessage(PChar("-=[Password_Shower]=-"));
     WindowRgn(Wnd);
     nid.cbSize := SizeOf(nid);
     nid.Wnd := Wnd;
     nid.uID := 30348798;
     nid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
     nid.uCallbackMessage := UM_TRAYICON;
     nid.hIcon := LoadImage(hInstance, "MAINICON", IMAGE_ICON, 16, 16, 0);
     nid.szTip := "PWS";
     CreateContextMenu;
   end;
   WM_CONTEXTMENU: begin
     TrackPopupMenuEx(ContextMenu, TPM_LEFTBUTTON,
                      Word(LParam), Word(LParam shr 16), WParam, nil);
   end;
   WM_COMMAND: begin
     if Word(WParam shr 16) = 0 then
       case Word(WParam) of
         ID_MENUMINIMIZE: begin
           CloseWindow(Wnd);
           ShowWindow(Wnd, SW_HIDE);
           EnableMenuItem(ContextMenu, ID_MENUMINIMIZE, MF_GRAYED);
           EnableMenuItem(ContextMenu, ID_MENURESTORE, MF_ENABLED);
           Shell_NotifyIcon(NIM_ADD, @nid);
         end;
         ID_MENURESTORE: begin
           ShowWindow(Wnd, SW_SHOW);
           OpenIcon(Wnd);
           EnableMenuItem(ContextMenu, ID_MENUMINIMIZE, MF_ENABLED);
           EnableMenuItem(ContextMenu, ID_MENURESTORE, MF_GRAYED);
           Shell_NotifyIcon(NIM_DELETE, @nid);
         end;
         ID_MENUCOPY: begin
           if (GetMenuState(ContextMenu, ID_MENUCOPY, MF_BYCOMMAND) and MF_CHECKED) = 0 then
             CheckMenuItem(ContextMenu, ID_MENUCOPY, MF_BYCOMMAND or MF_CHECKED)
           else
             CheckMenuItem(ContextMenu, ID_MENUCOPY, MF_BYCOMMAND or MF_UNCHECKED)
         end;
         ID_MENUQUERY: begin
           if (GetMenuState(ContextMenu, ID_MENUQUERY, MF_BYCOMMAND) and MF_CHECKED) = 0 then
             CheckMenuItem(ContextMenu, ID_MENUQUERY, MF_BYCOMMAND or MF_CHECKED)
           else
             CheckMenuItem(ContextMenu, ID_MENUQUERY, MF_BYCOMMAND or MF_UNCHECKED)
         end;
         ID_MENUCLOSE: begin
           if IsIconic(Wnd) then
             Shell_NotifyIcon(NIM_DELETE, @nid);
           DestroyMenu(ContextMenu);
           SendMessage(Wnd, WM_CLOSE, 0, 0);
         end;
       end;
   end;
   WM_PAINT: begin
     DC := BeginPaint(Wnd, Paint);
     bmp := LoadBitmap(hInstance, MakeIntResource(TargetID[Target]));
     dcMem := CreateCompatibleDC(DC);
     bmpOld := SelectObject(dcMem, bmp);
     BitBlt(DC, 0, 0, 16, 16, dcMem, 0, 0, SRCCOPY);
     SelectObject(dcMem, bmpOld);
     DeleteDC(dcMem);
     EndPaint(Wnd, Paint);
   end;
   WM_LBUTTONDOWN:
     case WParam of
       MK_LBUTTON: begin
         Target := tgUnknown;
         InvalidateRect(Wnd, nil, False);
         SetCursor(LoadCursor(hInstance, MakeIntResource(TargetID[Target])));
         SetCapture(Wnd);
       end;
       MK_LBUTTON or
       MK_CONTROL:
         SendMessage(Wnd, WM_NCLBUTTONDOWN, HTCAPTION, LParam);
     end;
   WM_MOUSEMOVE: begin
     if WParam = MK_LBUTTON then
     begin
       GetCursorPos(pt);
       CurTgWnd := WindowFromPoint(pt);
       if CurTgWnd <> PrvTgWnd then
       begin
         PrvTgWnd := CurTgWnd;
         RecognizeTarget(CurTgWnd);
         SetCursor(LoadCursor(hInstance, MakeIntResource(TargetID[Target])));
       end;
     end;
   end;
   WM_LBUTTONUP: begin
     HandlingTarget();
     Target := tgNoTarget;
     InvalidateRect(Wnd, nil, False);
     ReleaseCapture;
   end;
   WM_DESTROY:
     begin
       unhookwindowshookex(h);
       DestroyMenu(ContextMenu);
       PostQuitMessage(0);
       Exit;
     end;
   else
     Result := DefWindowProc(Wnd, Msg, WParam, LParam);
 end;
end;


 
parovoZZ ©   (2004-07-24 17:17) [4]

Кокретно по вопросу:

const
 WM_MYTRAYMSG = WM_USER + 100;   //Сообщения от иконки
..........
..........
..........
case msg of

   WM_MYTRAYMSG : case lParam of

                   WM_RBUTTONDOWN : PopupMenu (Handle);//Правая кнопка мышки
                                     
                   WM_LBUTTONDOWN : DialogCreate;//Левая кнопка
                                     
                  end;


 
гном1   (2004-07-25 07:46) [5]

Спасибо за ответы. Буду экспериментировать...


 
grom   (2004-07-25 18:24) [6]

TrayIcon
http://denisov.i2x2.ru/delphi/units.htm


 
parovoZZ ©   (2004-07-25 20:20) [7]

Да не за что.



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

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
3-1092393761
eLVik
2004-08-13 14:42
2004.09.12
ADOConnection.GetFieldNames


3-1092383731
John
2004-08-13 11:55
2004.09.12
Получение списка источников ODBC


6-1089025549
Alexander_Fomin
2004-07-05 15:05
2004.09.12
Проверка доменых имен


1-1093674631
GrayFace
2004-08-28 10:30
2004.09.12
Есть ли в Delphi какие-нибудь средства макроподстановки?


3-1092390857
HanIP
2004-08-13 13:54
2004.09.12
Процедура довавления записи