-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathTrayIcon.cpp
120 lines (104 loc) · 2.62 KB
/
TrayIcon.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "StdAfx.h"
#include "TrayIcon.h"
namespace DuiLib
{
CTrayIcon::CTrayIcon(void)
{
memset(&m_trayData, 0, sizeof(m_trayData));
m_bEnabled = false;
m_bVisible = false;
m_hWnd = NULL;
m_uMessage = UIMSG_TRAYICON;
}
CTrayIcon::~CTrayIcon(void)
{
DeleteTrayIcon();
}
void CTrayIcon::CreateTrayIcon( HWND _RecvHwnd, UINT _IconIDResource, LPCTSTR _ToolTipText, UINT _Message)
{
if(!_RecvHwnd || _IconIDResource <= 0 ){
return;
}
if(_Message != 0) m_uMessage = _Message;
m_hIcon = LoadIcon(CPaintManagerUI::GetInstance(), MAKEINTRESOURCE(_IconIDResource));
m_trayData.cbSize = sizeof(NOTIFYICONDATA);
m_trayData.hWnd = _RecvHwnd;
m_trayData.uID = _IconIDResource;
m_trayData.hIcon = m_hIcon;
m_trayData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
m_trayData.uCallbackMessage = m_uMessage;
if(_ToolTipText) _tcscpy(m_trayData.szTip, _ToolTipText);
Shell_NotifyIcon(NIM_ADD, &m_trayData);
m_bEnabled = true;
}
void CTrayIcon::DeleteTrayIcon()
{
Shell_NotifyIcon(NIM_DELETE, &m_trayData);
m_bEnabled = false;
m_bVisible = false;
m_hWnd = NULL;
m_uMessage = UIMSG_TRAYICON;
}
bool CTrayIcon::SetTooltipText( LPCTSTR _ToolTipText )
{
if(_ToolTipText) _tcscpy(m_trayData.szTip,_ToolTipText);
if (!m_bEnabled) return FALSE;
m_trayData.uFlags = NIF_TIP;
return Shell_NotifyIcon(NIM_MODIFY, &m_trayData) == TRUE;
}
bool CTrayIcon::SetTooltipText( UINT _IDResource )
{
TCHAR mbuf[256] = {0};
LoadString(CPaintManagerUI::GetInstance(), _IDResource,mbuf, 256);
return SetTooltipText(mbuf);
}
DuiLib::CDuiString CTrayIcon::GetTooltipText() const
{
return m_trayData.szTip;
}
bool CTrayIcon::SetIcon( HICON _Hicon )
{
if(_Hicon) m_hIcon = _Hicon;
m_trayData.uFlags = NIF_ICON;
m_trayData.hIcon = _Hicon;
if (!m_bEnabled) return FALSE;
return Shell_NotifyIcon(NIM_MODIFY, &m_trayData) == TRUE;
return false;
}
bool CTrayIcon::SetIcon( LPCTSTR _IconFile )
{
HICON hIcon = LoadIcon(CPaintManagerUI::GetInstance(),_IconFile);
return SetIcon(hIcon);
}
bool CTrayIcon::SetIcon( UINT _IDResource )
{
HICON hIcon = LoadIcon(CPaintManagerUI::GetInstance(), MAKEINTRESOURCE(_IDResource));
return SetIcon(hIcon);
}
HICON CTrayIcon::GetIcon() const
{
HICON hIcon = NULL;
hIcon = m_trayData.hIcon;
return hIcon;
}
void CTrayIcon::SetHideIcon()
{
if (IsVisible()) {
SetIcon((HICON)NULL);
m_bVisible = TRUE;
}
}
void CTrayIcon::SetShowIcon()
{
if (!IsVisible()) {
SetIcon(m_hIcon);
m_bVisible = FALSE;
}
}
void CTrayIcon::RemoveIcon()
{
m_trayData.uFlags = 0;
Shell_NotifyIcon(NIM_DELETE, &m_trayData);
m_bEnabled = FALSE;
}
}