TrayIcon.cpp 2.6 KB

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