Показать сообщение отдельно

Хелп, плиз! Срочно!
  #832  
Старый 02.12.2008, 21:45
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
Question Хелп, плиз! Срочно!

Товарищи, помогите
Цитата:
Сообщение от 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..
 
Ответить с цитированием