System Tray
От: GGoga  
Дата: 23.06.07 09:28
Оценка:
Исправлено форматирование текста. — SchweinDeBurg

Здравствуйте, господа программисты!
Я начинающий программист и недавно начал разбираться с Visual Studio. Подскажите, пожалуйста, мне, как еще тупому пользователю, как правильно работать с помещенеием и извлечением программы в и из Sytstem Tray соответственно.
Вот, что касается помещения в трэй, то я написал кое-какой код для этого, я помещаю иконку в трэй на следующее сообщение:

//--------------------------------------------------------------------------------------
// CMainFrame message handlers
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
    CFrameWnd::OnSize(nType, cx, cy);

    CWnd* pWindow = theApp.GetWindow();
    if(nType == SIZE_MINIMIZED)
    {
        if(!TrayMessage(pWindow->GetSafeHwnd(), NIM_ADD, 0, AfxGetApp()->LoadIconW(IDI_MY_ICON), true))
            MessageBox(_T("Не возможно свернуть в трэй!"),
                _T("Внимание"), MB_OK | MB_ICONEXCLAMATION | MB_ICONWARNING);
        else
        {
            pWindow->ShowWindow(SW_MINIMIZE);
            pWindow->ShowWindow(SW_HIDE);
        }

    }
}
//--------------------------------------------------------------------------------------

Вот функция помещения в трэй:

//--------------------------------------------------------------------------------------
// Иконка в панеле индикации
BOOL CMainFrame::TrayMessage(HWND hDlg, DWORD dwMessage, UINT uID, HICON hIcon, bool pszTip)
{
    BOOL res; 
    NOTIFYICONDATA tnd; 

    tnd.cbSize = sizeof(NOTIFYICONDATA); 
    tnd.hWnd = hDlg; 
    tnd.uID = uID; 
    tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; 
    tnd.uCallbackMessage = MYWM_NOTIFYICON; // Сообщение, которое пошлется при всяких там кликах на иконке... 
    tnd.hIcon = hIcon; 

    if (pszTip) 
        lstrcpyn(tnd.szTip, _T("Embaded Data Base"), sizeof(tnd.szTip) / sizeof(tnd.szTip[0])); 
    else 
        tnd.szTip[0] = '\0';

    res = Shell_NotifyIcon(dwMessage, &tnd);

    return res;
}
//--------------------------------------------------------------------------------------

И помещается она нормально, только вот как мне вызвать контекстное меню, щелкая правой кнопкой мыши на иконке в трэе я не знаю. Какое событие необходимо обрабатывать, и что нужно для этого сделать. И правильно ли я построил структуру для этой цели. Для развертывания всего лишь нужно снова вызвать функцию TrayMessage с другим параметром, вот только как это сделать я не знаю. Кто знает ответ на вопрос, подскажите пожалуйста, а то я сам полностью застопорился и ничего не могу сделать...

Заранее ОГРОМНОЕ СПАСИБО!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.