VC中使程序最小化到系统托盘区

  1. //定义托盘图标结构体
  2. NOTIFYICONDATA nid; 
  3. #define WM_ICONNOTIFY  WM_USER + 909 //图标响应消息(lParam)
  4. #define ID_TASKBARICON 100           //参数(wParam)
  5. //初始化系统托盘图标   
  6. void CMainFrame::OnBtnMinimize() 
  7. {    
  8.     //初始化系统托盘图标   
  9.     nid.cbSize = sizeof(NOTIFYICONDATA);   
  10.     nid.hWnd = m_hWnd;;   
  11.     nid.uID = ID_TASKBARICON; //发出的消息中的wParam参数   
  12.     nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;   
  13.     nid.uCallbackMessage = WM_ICONNOTIFY; //点击托盘图标系统发出的消息(即发出的消息中的lParam参数)  
  14.     nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_HIS_COMM));   
  15.     strcpy(nid.szTip, "历史数据采集软件 1.0.3");   
  16.     Shell_NotifyIcon(NIM_ADD, &nid); //加入图标
  17.     ShowWindow(SW_HIDE); //隐藏窗体
  18. //手工添加消息处理函数
  19. afx_msg LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam); 
  20. ON_MESSAGE(WM_ICONNOTIFY,CMainFrame::OnNotifyIcon) 
  21. //双击系统托盘,使程序正常化
  22. LRESULT CMainFrame::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
  23. {
  24.     POINT rpoint;   
  25.     CMenu tmenu;   
  26.     GetCursorPos(&rpoint); 
  27.     //如果在托盘图标上双击左键  
  28.     if ( ( wParam == ID_TASKBARICON ) && ( lParam == WM_LBUTTONDBLCLK ) )   
  29.     {   
  30.         ShowWindow(SW_SHOW); //显示窗体   
  31.         Shell_NotifyIcon(NIM_DELETE, &nid); //删除系统托盘图标   
  32.     }
  33.     //如果在托盘图标上双击右键
  34.     if ( ( wParam == ID_TASKBARICON ) && ( lParam == WM_RBUTTONDOWN ) )   
  35.     {         
  36.         tmenu.LoadMenu(IDR_MAINFRAME); //加载系统主菜单  
  37.         SetForegroundWindow(); //将程序置于桌面顶部   
  38.         tmenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN |   TPM_RIGHTBUTTON,rpoint.x, rpoint.y, this); //在点击图标处弹出系统菜单的第一项  
  39.     }   
  40.     return 0;
  GIS导航网

你可能感兴趣的:(shell,user,delete)