Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В трей запихал , а как вытащить обратно? [Win2k]


brat ©   (2003-12-30 21:49:00) 

Запустил spy++ когда приложение свернуто в трее, наводишь курсор на иконку и сообщения появляются "Sdiapp" Application. Сообщение именно WM_USER+1234, меняется только lParam.
Сначала определил обработчик Application->OnMessage = MyProc;

void __fastcall TForm1::MyProc(tagMsg& msg, bool& Handled)
{
if( msg.msg == WM_TO_TRAY && msg.lParam == WM_LBUTTONDBLCLK )
{
RestoreFromTray(); //при клике на иконку сюда не заходит
Handled = true;
}
}

Сейчас сделано так, результат можно сказать тот же, не доходит до RestoreFromTray(); Где ошибка и как правильно?

#define WM_TO_TRAY (WM_USER+1234)
#define ID_TO_TRAY 1234

class TForm1:TForm
{...

protected:
void __fastcall Process_wmToTray(TMessage&);

BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_TO_TRAY,TMessage,Process_wmToTray);
END_MESSAGE_MAP(TForm);


Unit1.cpp
void __fastcall TForm1::Process_wmToTray(TMessage &Msg)
{
if( Msg.LParam == WM_LBUTTONDBLCLK )
RestoreFromTray();
}

Builder c++ 5.0, patch 1


jonni   (2004-01-01 07:39:00) [1]

nu vot naprimer est" para oshibok.. odna iz kotorih pohozhe mozhet izmenit" delo k luchshemu....

nid.cbSize = sizeof(NOTIFYICONDATA);
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

i ya bi esche ubral: memset(&nid, 0, sizeof(nid));


brat   (2003-12-31 14:13:00) [2]

Вот как делаю:

BOOL FlipToTray(HWND hWnd, HICON hIcon, BOOL bMinimize)
{
NOTIFYICONDATA nid;
memset(&nid, 0, sizeof(nid));
nid.cbSize = sizeof(nid);
nid.hWnd = hWnd;
nid.uID = ID_TO_TRAY;
nid.uCallbackMessage = WM_TO_TRAY;
nid.hIcon = hIcon;
GetWindowText(hWnd, nid.szTip,
sizeof(nid.szTip)/sizeof(nid.szTip[0]));
nid.uFlags = NIF_ICON|NIF_MESSAGE;


BOOL ok = Shell_NotifyIcon(NIM_ADD, &nid);


if(bMinimize)
ShowWindow(hWnd, SW_MINIMIZE);

if(ok)
ShowWindow(hWnd, SW_HIDE);

return ok;
}
......
void __fastcall TSDIAppForm::FormCreate(TObject *Sender)
{
Application->OnMinimize = AppMinimize;
....

void __fastcall TSDIAppForm::AppMinimize(TObject* Sender)
{
FlipToTray(Application->Handle, Application->Icon->Handle, FALSE);
}


jonni   (2003-12-31 07:27:00) [3]

pohozhe na to chto ti ne pravil"no zapihal v tray!!
pokazhi kak ti dobovlyaesh iconcu v tray!!


Наверх

Титульная страница Поиск, карта сайта Написать письмо