天天看點

VC中使程式最小化到系統托盤區

//定義托盤圖示結構體 NOTIFYICONDATA nid; #define WM_ICONNOTIFY WM_USER + 909 //圖示響應消息(lParam) #define ID_TASKBARICON 100 //參數(wParam) //初始化系統托盤圖示 void OnBtnMinimize() { //初始化系統托盤圖示 nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = m_hWnd;; nid.uID = ID_TASKBARICON; //發出的消息中的wParam參數 nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; nid.uCallbackMessage = WM_ICONNOTIFY; //點選托盤圖示系統發出的消息(即發出的消息中的lParam參數) nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_HIS_COMM)); //圖示檔案 strcpy(nid.szTip, "我的程式"); Shell_NotifyIcon(NIM_ADD, &nid); //加入圖示 ShowWindow(SW_HIDE); //隐藏窗體 } //手工添加消息處理函數 afx_msg LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam); ON_MESSAGE(WM_ICONNOTIFY, OnNotifyIcon) //輕按兩下系統托盤,使程式正常化 LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam) { POINT rpoint; CMenu tmenu; GetCursorPos(&rpoint); //如果在托盤圖示上輕按兩下左鍵 if ( ( wParam == ID_TASKBARICON ) && ( lParam == WM_LBUTTONDBLCLK ) ) { ShowWindow(SW_SHOW); //顯示窗體 Shell_NotifyIcon(NIM_DELETE, &nid); //删除系統托盤圖示 } //如果在托盤圖示上單擊右鍵 if ( ( wParam == ID_TASKBARICON ) && ( lParam == WM_RBUTTONDOWN ) ) { tmenu.LoadMenu(IDR_MAINFRAME); //加載系統主菜單 SetForegroundWindow(); //将程式置于桌面頂部 //在點選圖示處彈出系統菜單的第一項 tmenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, rpoint.x, rpoint.y, this); } return 0; } 本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/zltpc007/archive/2008/01/05/2026560.aspx

繼續閱讀