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. }

href="http://www.j2megame.org/wupei/plugins/plogeshi/styles/plogeshi.css" type="text/css" rel="stylesheet" />下面就是爲圖標添加自己的響應消息:

  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 篇原創文章 · 獲贊 2 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章