WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  SysTray!

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   SysTray!
Sheff опубликован 02-01-2002 00:20 MSK   Click Here to See the Profile for Sheff   Click Here to Email Sheff  
Я поместил иконку в SysTray, а как обработать событие шелчка мыши по ней? Если можно пример
xKernel опубликован 02-01-2002 08:54 MSK     Click Here to See the Profile for xKernel  Click Here to Email xKernel     
Насколко я помню при заполнении NOTIFYICONDATA задаёться uCallbackMessage. При обработке этого сообщения lParam есть Message полученный непосредсвенно иконкой. Вроде так.
Drunkard опубликован 02-01-2002 10:00 MSK     Click Here to See the Profile for Drunkard  Click Here to Email Drunkard     
Вот тебе! :-) Правда все это я ваял на API.
#include <winuser.h>

#define MYWM_NOTIFYICON 4040
#define IDD_RBUT 103
#define IDD_LBUT 102

NOTIFYICONDATA tnid;
UINT uID=10011;


//Данные для иконки на панели задач (в Tray)
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=MainWindow;
tnid.uID=uID;
tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnid.uCallbackMessage=MYWM_NOTIFYICON;
tnid.hIcon=hIcon;
MyTaskBar=TaskBarAddIcon(hIcon,lpszTip);

//Помещаешь в виндовую функцию
case MYWM_NOTIFYICON:
On_MYWM_NOTIFYICON(hwnd,wParam,lParam);
break;
case WM_DESTROY:
TaskBarDeleteIcon();
PostQuitMessage(0);
break;

//И пишешь примерно такие процедуры
BOOL TaskBarAddIcon(HICON hIcon,LPSTR lpszTip)
{
BOOL res;
//Всплывающая подсказка при наведении мышки
sprintf(lpszTip,"А это я!");
if(lpszTip)lstrcpyn(tnid.szTip,lpszTip,sizeof(tnid.szTip));
else tnid.szTip[0]='\0';
res=Shell_NotifyIcon(NIM_ADD,&tnid);
if(hIcon) DestroyIcon(hIcon);
return res;
}

BOOL TaskBarDeleteIcon(void)
{
BOOL res;

res=Shell_NotifyIcon(NIM_DELETE,&tnid);
return res;
}

void On_MYWM_NOTIFYICON(HWND hwnd,WPARAM wParam, LPARAM lParam)
{
UINT uPar;
UINT uMouseMsg;

uPar=(UINT)wParam;
uMouseMsg=(UINT)lParam;
if(uMouseMsg==WM_LBUTTONDOWN) {
switch (uPar)
{
case uID:
DialogBox(hInstance,MAKEINTRESOURCE(IDD_LBUT),hwnd,(DLGPROC)LBut);
EndDialog(hwnd,TRUE);
break;
default:
break;
}
}
else if(uMouseMsg==WM_RBUTTONDOWN) {
switch (uPar)
{
case uID:
DialogBox(hInstance,MAKEINTRESOURCE(IDD_RBUT),hwnd,(DLGPROC)RBut);
break;
default:
break;
}
};
}

//Реакция на нажатие левой кнопки на иконке в SysTray
//Выскакивает диалоговое окно, которое сам создаешь в ресурсовом редакторе
BOOL CALLBACK LBut(HWND hdwnd,UINT mes,WPARAM wPar,LPARAM lPar)
{
switch(mes)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wPar))
{
case IDOK:
EndDialog(hdwnd,TRUE);
return TRUE;
default: return TRUE;
}
default: break;
}
return FALSE;
}

//Реакция на нажатие прав. кнопки на иконке в SysTray
//Выскакивает другое диалоговое окно, которое сам создаешь в ресурсовом редакторе
BOOL CALLBACK RBut(HWND hdwnd,UINT mes,WPARAM wPar,LPARAM lPar)
{
switch(mes)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wPar))
{
case IDOK:
EndDialog(hdwnd,TRUE);
DestroyWindow(GetParent(hdwnd));
return TRUE;
case IDCANCEL:
EndDialog(hdwnd,TRUE);
return TRUE;
default: return TRUE;
}
default: break;
}
return FALSE;
}

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.