Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Иконка в System Tray.

10K
04 июня 2007 года
nuhop
50 / / 24.03.2007
Здесь уже поднималась тема про иконки в System Tray (Как создать Dialog невидемый в Task Bar и System Tray). Как наоборот создать диалоговое окно, которое бы сворачиавлось в иконку в System Tray и было бы везде видимо? Может есть ссылки с толковыми объяснениями?
320
06 июня 2007 года
m_Valery
1.0K / / 08.01.2007
Могу дать пример для Visual Studio 2005.Запускаешь,сворачиваешь - в трее появляется иконка( сердце ).Иконка меняется каждую секунда,чем создается эффект бьющегося сердца.Двойной клик по иконке восстанавливает главное окно,клик правой кнопкой мыши - вызывает
контекстное меню.
10K
07 июня 2007 года
nuhop
50 / / 24.03.2007
Спасибо, m_Valery, получилось. У меня не получается деактивировать пункт меню после того, как этот пункт был выбран. Я к этому пункту привязываю функцию OnAppStart.

Код:
BEGIN_MESSAGE_MAP(CMy3Dlg, CDialog)
    //{{AFX_MSG_MAP(CMy3Dlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_MESSAGE ( WM_TRAYNOTIFY, OnTrayNotify )
    ON_WM_WINDOWPOSCHANGING()
    ON_COMMAND(ID_APP_OPTIONS, OnAppStart)
    ON_COMMAND(ID_APP_EXIT, OnAppExit)
    ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()


Меню появляется по функции OnTrayNotify:

Код:
...

LRESULT CMy3Dlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)
{
    //Return quickly if its not for this tray icon
    if (wParam != nid.uID) return 0L;

    CMenu menu, *pSubMenu;
    CWnd *pTargetWnd = AfxGetMainWnd();

    if (!pTargetWnd) return 0L;

    if (LOWORD (lParam) == WM_RBUTTONUP)
    {    
        if (!menu.LoadMenu(IDR_POPUP_MENU)) return 0;

        pSubMenu = menu.GetSubMenu(0);
        if (!pSubMenu)
            return 0;

        // Make chosen menu item the default (bold font)
        ::SetMenuDefaultItem(pSubMenu->m_hMenu, m_DefaultMenuItemID, m_DefaultMenuItemByPos);

        // Display and track the popup menu
        CPoint pos;
        GetCursorPos(&pos);

        pTargetWnd->SetForegroundWindow();

        ::TrackPopupMenu(pSubMenu->m_hMenu, 0, pos.x, pos.y, 0,
                         pTargetWnd->GetSafeHwnd(), NULL);

        pTargetWnd->PostMessage(WM_NULL, 0, 0);

        menu.DestroyMenu();
    }

   ...

}
   ...


Как бы мне нажатую кнопку деактивировать?
311
13 декабря 2008 года
plastictown
309 / / 08.01.2006
m_Valery спасибо за код, все отлично работает! В VS 6
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог