
02.12.2008, 21:45
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Хелп, плиз! Срочно!
Товарищи, помогите
Сообщение от criz
Как работать с прогой в трее? Т.е. свернуть в трей я смог, теперь надо вызвать ее, например, по WM_LBUTTONDBLCLK'у. Как это сделать?
Как отловить событие мыши в трее?
Вот что получилось, на основе гугла:
Код:
#define WM_ShellNote (WM_APP + 1)
/*..............*/
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
bool DoubleClick();
/*..............*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
memset(&iconData, 0, sizeof(iconData));
iconData.cbSize = sizeof(NOTIFYICONDATA);
iconData.hWnd = Form1->Handle;
iconData.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(32516));
iconData.uID = 1000;
iconData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
lstrcpyn(iconData.szTip, "Всплывающее окошко\n", sizeof(iconData.szTip)/sizeof(iconData.szTip[0]));
iconData.uCallbackMessage = WM_ShellNote;
Shell_NotifyIconA(NIM_ADD, &iconData);
Form1->Hide();
}
//---------------------------------------------------------------------------
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg == WM_ShellNote && hWnd == Form1->Handle && wParam == 1)
{
switch((UINT)lParam)
{
case WM_RBUTTONDBLCLK: return DoubleClick();
}
}
}
bool DoubleClick()
{
Form1->Show();
Shell_NotifyIconA(NIM_DELETE, &iconData);
DestroyIcon(iconData.hIcon);
}
Где еррор?
Последний раз редактировалось criz; 02.12.2008 в 23:03..
|
|
|