Сообщения возникающие при манипуляциях с иконкой трея?
От: The_Only  
Дата: 22.08.05 16:59
Оценка:
Собственно, необходим примерчик на Си Билдере. Программа должна реагировать на шелчки мышкой по своей иконке на трее.Проблемма в том, что подобное уже написанно на делфе, но абсолютно не работает в Си Б-ре, хотя компилится, в чем проблемма понять не могу, жду помощи )

ЗЫ: Подобный вопрос уже задавал, но ответа не получил. Возможно вопрос не корректен, тогда плиз поясните в чем...
Re: Сообщения возникающие при манипуляциях с иконкой трея?
От: Rius Россия  
Дата: 22.08.05 17:35
Оценка:
Здравствуйте, 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;
//---------------------------------------------------------------------------
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.