Собственно, необходим примерчик на Си Билдере. Программа должна реагировать на шелчки мышкой по своей иконке на трее.Проблемма в том, что подобное уже написанно на делфе, но абсолютно не работает в Си Б-ре, хотя компилится, в чем проблемма понять не могу, жду помощи )
ЗЫ: Подобный вопрос уже задавал, но ответа не получил. Возможно вопрос не корректен, тогда плиз поясните в чем...
Здравствуйте, The_Only, Вы писали:
T_O>Собственно, необходим примерчик на Си Билдере. Программа должна реагировать на шелчки мышкой по своей иконке на трее.Проблемма в том, что подобное уже написанно на делфе, но абсолютно не работает в Си Б-ре, хотя компилится, в чем проблемма понять не могу, жду помощи )
T_O>ЗЫ: Подобный вопрос уже задавал, но ответа не получил. Возможно вопрос не корректен, тогда плиз поясните в чем...
собственно на тот вопрос хотел ответить, да примера под рукой не было...
вот лови, если чего здесь не хватает — спрашивай
cpp
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
: TForm(Owner)
{
HICON hMainIcon = Application->Icon->Handle;
Nid.cbSize = sizeof(NOTIFYICONDATA);
Nid.hWnd = Handle;
Nid.uID = IDTRAYICON;
Nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_INFO | NIF_TIP;;
Nid.uCallbackMessage = MYWM_NOTIFY;
Nid.hIcon = hMainIcon;
Nid.uTimeout = 1000;
Shell_NotifyIcon (NIM_ADD,&Nid);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormDestroy(TObject *Sender)
{
Shell_NotifyIcon(NIM_DELETE,&Nid);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ShowNotify(AnsiString Info, AnsiString InfoTitle, DWORD InfoFlags)
{
// HICON hMainIcon=LoadImage(Instance,MAKEINTRESOURCE(IDAPPLICON),IMAGE_ICON,16,16,0);
strcpy(Nid.szInfo,Info.c_str());
strcpy(Nid.szInfoTitle,InfoTitle.c_str());
strcpy(Nid.szTip,"Tip");
Nid.dwInfoFlags = InfoFlags;
Shell_NotifyIcon(NIM_MODIFY,&Nid);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::MyNotify(TMessage& Msg)
{
/*
const WM_MOUSEMOVE = 0x200;
const WM_LBUTTONDOWN = 0x201; 'Button down
const WM_LBUTTONUP = 0x202; 'Button up
const WM_LBUTTONDBLCLK = 0x203; 'Double-click
const WM_RBUTTONDOWN = 0x204; 'Button down
const WM_RBUTTONUP = 0x205; 'Button up
const WM_RBUTTONDBLCLK = 0x206; 'Double-click
const WM_MBUTTONDOWN = 0x207; 'Button down
const WM_MBUTTONUP = 0x208; 'Button up
const WM_MBUTTONDBLCLK = 0x209; 'Double-click
#define NIIF_INFO 0x00000001
#define NIIF_WARNING 0x00000002
#define NIIF_ERROR 0x00000003
#define NIIF_ICON_MASK 0x0000000F
#if (_WIN32_IE >= 0x0501)
#define NIIF_NOSOUND 0x00000010
#endif
#endif
*/
POINT MousePos;
switch(Msg.LParam)
{
case WM_MOUSEMOVE:
if (GetCursorPos(&MousePos))
{
// PopupMenu1->PopupComponent = ClientForm;
// SetForegroundWindow(Handle);
// PopupMenu1->Popup(MousePos.x, MousePos.y);
ShowNotify("ìûøü ïðîáåæàëà","âíèìàíèå!", NIIF_INFO | NIIF_NOSOUND);
}
default:
break;
}
TForm::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
header
const IDTRAYICON = 1006;
#define MYWM_NOTIFY (WM_APP+100)
//---------------------------------------------------------------------------
class TFormMain : public TForm
{
...
public:
NOTIFYICONDATA Nid;
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MYWM_NOTIFY,TMessage,MyNotify)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TFormMain *FormMain;
//---------------------------------------------------------------------------