VC下添加和删除系统托盘图标,及托盘事件的响应

 

添加和删除系统托盘图标:

  1. //需要添加一个成员变量
  2. NOTIFYICONDATA m_nd; //NOTIFYICONDATA结构
  3.  
  4. /***************************************
  5.  * 将图标加入系统托盘
  6.  * 参数:
  7.  * hWnd - 窗体句柄
  8.  * hIcon  - 所要加入的图标句柄
  9.  * title     - 悬停于系统托盘之上时所要显示的消息
  10.  * uCallbackMessage - 消息标识(需用户自己定义消息)
  11.  ***************************************/
  12. void CMyDlg:: AddIcon (HWND hWnd, HICON hIcon, UINT uCallbackMessage, char *title )
  13. {
  14.         m_nd. cbSize = sizeof (NOTIFYICONDATA );
  15.         m_nd. hWnd = hWnd;
  16.         m_nd. uID = IDR_MAINFRAME;
  17.         m_nd. uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
  18.         m_nd. uCallbackMessage = uCallbackMessage;
  19.         m_nd. hIcon = hIcon;
  20.         strcpy (m_nd. szTip, title );
  21.         Shell_NotifyIcon (NIM_ADD, &m_nd );        //加入图标
  22. }
  23.  
  24. //删除系统托盘图标
  25. void CMyDlg:: RemoveIcon ( )
  26. {
  27.         Shell_NotifyIcon (NIM_DELETE, &m_nd );
  28. }

下面就是为图标添加自己的响应消息:

  1. //用户定义的消息(在相应头文件中加入)
  2. #define MYWM_NOTIFYICON WM_USER+1
  3.  
  4. //添加WinProc消息函数
  5. LRESULT CMyCatchScreenDlg:: WindowProc (UINT message, WPARAM wParam, LPARAM lParam )
  6. {
  7.   // TODO: Add your specialized code here and/or call the base class
  8.   switch (message )
  9.   {
  10.   case MYWM_NOTIFYICON:
  11.     //如果是用户定义的消息
  12.     if (lParam==WM_LBUTTONDOWN )
  13.     {
  14.     //添加自己的函数
  15.    
  16.     //鼠标单击图标时主窗口出现
  17.     //ShowMyWindow();
  18.     }
  19.     else if (lParam==WM_RBUTTONDOWN )
  20.     {
  21.     //添加自己的函数
  22.    
  23.     //鼠标右键单击弹出选单
  24.     /*
  25.     CMenu menu;
  26.     menu.LoadMenu(IDR_MY_MENU); //载入事先定义的选单
  27.     CMenu*pMenu=menu.GetSubMenu(0);
  28.     CPoint pos;
  29.     GetCursorPos(&pos);
  30.     pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
  31.     */
  32.     }
  33.   break;
  34.   }
  35.   return CDialog:: WindowProc (message, wParam, lParam );
  36. }

调用演示:

  1. void CMyDlg:: ShowMyWindow ( )
  2. {
  3.         RemoveIcon ( );    //删除系统图标
  4.         ShowWindow (SW_SHOW );    //显示窗口
  5. }
  6.  
  7. void CMyDlg:: HideMyWindow ( )
  8. {
  9.         ShowWindow (SW_HIDE );    //隐藏窗口
  10.         AddIcon (m_hWnd,m_hIcon,MYWM_NOTIFYICON, “MyDlg” );        //添加系统图标
  11. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值