TrayNotify.cpp
上传用户:oldpeter23
上传日期:2013-01-09
资源大小:1111k
文件大小:5k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*------------------------------------------------------------------------------*
  2.  =============================
  3.    模块名称: TrayNotify.cpp
  4.  =============================
  5.  [目的]
  6.  
  7.    方便任务栏托盘区图标的使用.
  8.  [描述]
  9.  
  10.    这是一个封装了任务栏托盘区图标所有操作的类,有了它就可以很方便地控制任务栏
  11.    托盘区图标。
  12.  
  13.  [用法]
  14.  
  15.    这个模块用法很简单,我想用不着更多的说明. :-)
  16.  [依赖性]
  17.    无
  18.  [修改记录]
  19.  
  20.   日期:     01-10-7  
  21.   版本:     1.01       
  22.   作者:     Brant Q
  23.   备注:
  24.     
  25.  [版权]
  26.   2000-2002  115软件工厂  版权所有
  27.  [声明]
  28.      
  29.      
  30.                                               
  31. *------------------------------------------------------------------------------*/
  32. #include <Windows.h>
  33. #include "TrayNotify.h"
  34. //由于该类实现比较简单,很多东西在MSDN中一查便知,所以也就不在此多加注释
  35. /*---------------------------------------------------------------------------------
  36. */
  37. CTrayNotify::CTrayNotify()
  38. {
  39. memset((void*)&m_nid,0,sizeof(m_nid));
  40. m_nid.cbSize=sizeof(m_nid);
  41. m_bShow=FALSE;
  42. }
  43. /*---------------------------------------------------------------------------------
  44. */
  45. CTrayNotify::~CTrayNotify()
  46. {
  47. ShowIcon(FALSE);
  48. }
  49. /*---------------------------------------------------------------------------------
  50. */
  51. void CTrayNotify::SetIcon(const HICON hIcon,BOOL bEnable)
  52. {
  53. m_nid.hIcon=hIcon;
  54. if(bEnable)
  55. m_nid.uFlags|=NIF_ICON;
  56. }
  57. /*---------------------------------------------------------------------------------
  58. */
  59. HICON CTrayNotify::GetIcon() const
  60. {
  61. return m_nid.hIcon;
  62. }
  63. /*---------------------------------------------------------------------------------
  64. */
  65. void CTrayNotify::SetMsg(UINT uMsg,BOOL bEnable)
  66. {
  67. m_nid.uCallbackMessage=uMsg;
  68. if(bEnable)
  69. m_nid.uFlags|=NIF_MESSAGE;
  70. }
  71. /*---------------------------------------------------------------------------------
  72. */
  73. UINT CTrayNotify::GetMsg()
  74. {
  75. return m_nid.uCallbackMessage;
  76. }
  77. /*---------------------------------------------------------------------------------
  78. */
  79. void CTrayNotify::SetTip(const char *szTip,BOOL bEnable)
  80. {
  81. lstrcpyn(m_nid.szTip,szTip,sizeof(m_nid.szTip));
  82. if(bEnable)
  83. m_nid.uFlags|=NIF_TIP;
  84. }
  85. /*---------------------------------------------------------------------------------
  86. */
  87. void CTrayNotify::GetTip(char *szTip,UINT uTxtLen) const
  88. {
  89. lstrcpyn(szTip,m_nid.szTip,uTxtLen);
  90. }
  91. /*---------------------------------------------------------------------------------
  92. */
  93. BOOL CTrayNotify::SetHwnd(const HWND hWnd)
  94. {
  95. BOOL bRet=TRUE;
  96. if(IsWindow(hWnd))
  97. {
  98. m_nid.hWnd=hWnd;
  99. }
  100. else
  101. bRet=FALSE;
  102. return bRet;
  103. }
  104. /*---------------------------------------------------------------------------------
  105. */
  106. HWND CTrayNotify::GetHwnd() const
  107. {
  108. return m_nid.hWnd;
  109. }
  110. /*---------------------------------------------------------------------------------
  111. */
  112. void CTrayNotify::SetID(const UINT uID)
  113. {
  114. m_nid.uID=uID;
  115. }
  116. /*---------------------------------------------------------------------------------
  117. */
  118. UINT CTrayNotify::GetID() const
  119. {
  120. return m_nid.uID;
  121. }
  122. /*---------------------------------------------------------------------------------
  123. */
  124. BOOL CTrayNotify::Refresh()
  125. {
  126. return Shell_NotifyIcon(NIM_MODIFY,&m_nid);
  127. }
  128. /*---------------------------------------------------------------------------------
  129. */
  130. BOOL CTrayNotify::ShowIcon(BOOL bShow)
  131. {
  132. BOOL bRet=FALSE;
  133. if(m_bShow)
  134. {
  135. if(!bShow)
  136. {
  137. bRet=Shell_NotifyIcon(NIM_DELETE,&m_nid);
  138. }
  139. }
  140. else
  141. {
  142. if(bShow)
  143. bRet=Shell_NotifyIcon(NIM_ADD,&m_nid);
  144. }
  145. if(bRet)
  146. {
  147. m_bShow=bShow;
  148. }
  149. return bRet;
  150. }
  151. /*---------------------------------------------------------------------------------
  152. */
  153. BOOL CTrayNotify::Modify(const NOTIFYICONDATA& nid)
  154. {
  155. CopyMemory((void*)&m_nid,(void*)&nid,sizeof(nid));
  156. return Shell_NotifyIcon(NIM_MODIFY,&m_nid);
  157. }
  158. /*---------------------------------------------------------------------------------
  159. */
  160. void CTrayNotify::GetNid(NOTIFYICONDATA* pNid) const
  161. {
  162. CopyMemory((void*)pNid,(void*)&m_nid,sizeof(m_nid));
  163. }
  164. /*---------------------------------------------------------------------------------
  165. */
  166. BOOL CTrayNotify::IsIconShow() const
  167. {
  168. return m_bShow;
  169. }
  170. /*---------------------------------------------------------------------------------
  171. */
  172. void CTrayNotify::Reset()
  173. {
  174. ShowIcon(FALSE);
  175. memset((void*)&m_nid,0,sizeof(m_nid));
  176. }
  177. /*---------------------------------------------------------------------------------
  178. */
  179. void CTrayNotify::SetFlag(UINT uFlag)
  180. {
  181. m_nid.uFlags=uFlag;
  182. }
  183. /*---------------------------------------------------------------------------------
  184. */
  185. UINT CTrayNotify::GetFlag() const
  186. {
  187. return m_nid.uFlags;
  188. }
  189. //文件尾