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

Вниз

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

 
гном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 вся ветка

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

Наверх





Память: 0.48 MB
Время: 0.037 c
6-1088876071
alexa
2004-07-03 21:34
2004.09.12
Сокеты


11-1079333601
M5
2004-03-15 09:53
2004.09.12
Как работать со списками List и StrListEx?


14-1093507145
Baks
2004-08-26 11:59
2004.09.12
Мастера подскажите


4-1089994930
Ded Moroz
2004-07-16 20:22
2004.09.12
проблемы с RAS


1-1093375510
VZup
2004-08-24 23:25
2004.09.12
Круглые SpeedButton





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