1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-11-03 04:17:17 -05:00
icecast-server/win32/Traynot.cpp

65 lines
1.6 KiB
C++
Raw Normal View History

#include "stdafx.h"
#include "TrayNot.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTrayNot
CTrayNot::CTrayNot ( CWnd* pWnd, UINT uCallbackMessage,
LPCTSTR szTip, HICON* pList )
{
// this is only for Windows 95 (or higher)
m_bEnabled = ( GetVersion() & 0xff ) >= 4 ;
if (!m_bEnabled)
return ;
// load up the NOTIFYICONDATA structure
m_tnd.cbSize = sizeof(NOTIFYICONDATA) ;
m_tnd.hWnd = pWnd->GetSafeHwnd() ;
m_tnd.uID = 0 ;
m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ;
m_tnd.uCallbackMessage = uCallbackMessage;
strcpy ( m_tnd.szTip, "Icecast2");
//or you could use:
//strcpy ( m_tnd.szTip, AfxGetApp()->m_pszAppName);
//this will display the app name instead of the string you specify
// save the pointer to the icon list and set the initial
// default icon.
m_pIconList = pList ;
m_tnd.hIcon = m_pIconList[0] ;
Shell_NotifyIcon (NIM_ADD,&m_tnd);
}
CTrayNot::~CTrayNot()
{
if (m_bEnabled)
Shell_NotifyIcon (NIM_DELETE, &m_tnd);
}
void CTrayNot::SetState(int id)
{
if (!m_bEnabled)
return;
m_tnd.hIcon = m_pIconList[id];
m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ;
//Ive found in windows XP that this command makes the icon not visable in the system tray....we dont want that now
//do we?
Shell_NotifyIcon(NIM_MODIFY, &m_tnd);
}
void CTrayNot::SetTIP(char *pTip) {
memset(m_tnd.szTip, '\000', sizeof(m_tnd.szTip));
strncpy(m_tnd.szTip, pTip, sizeof(m_tnd.szTip)-1);
Shell_NotifyIcon(NIM_MODIFY, &m_tnd);
}