mfc添加托盤圖標

  1. 創建圖標
//在OnInitDialog方法中調用
NOTIFYICONDATA  data;
	data.cbSize = sizeof(NOTIFYICONDATA);//結構體的大小
	data.hWnd = this->m_hWnd;//接收托盤消息的窗口句柄 this是當前dialog
	data.uID = IDR_MAINFRAME;//定義的托盤圖標ID
	data.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;//設置屬性,下面的三個屬性是否有效
	lstrcpyn(data.szTip, _T("單擊右鍵顯示菜單"), sizeof(_T("單擊右鍵顯示菜單")));//圖標上的提示字符串
	data.uCallbackMessage = WM_ONTRAY;//自定義的消息,
	data.hIcon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));//顯示在系統托盤上的圖標
	Shell_NotifyIcon(NIM_ADD, &data);// 向任務欄的狀態欄發送添加托盤圖標的消息
  1. 添加系統菜單
    資源視圖->右鍵添加資源->menu->創建:
    在這裏插入圖片描述
  2. 在dialog的頭文件中定義菜單變量:
 CMenu menu;
  1. 爲菜單變量加載菜單,也是在OnInitDialog中
menu.LoadMenu(IDR_MENU1); //裝載自定義的右鍵菜單 
  1. 設置響應托盤點擊事件的方法
ON_MESSAGE(WM_ONTRAY, OnTray)
  1. 定義響應事件
afx_msg LRESULT OnTray(WPARAM wParam, LPARAM lParam);
  1. 響應事件方法實現
LRESULT CBcguess3Dlg::OnTray(WPARAM wParam, LPARAM lParam) {
	UINT uMouseMsg = (UINT)lParam;
	if (uMouseMsg == WM_RBUTTONDOWN) {
		CMenu* pPopup = menu.GetSubMenu(0);
		CPoint point;
		GetCursorPos(&point);
		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,
			point.x, point.y, AfxGetApp()->m_pMainWnd, TPM_LEFTALIGN);
	}

	if (uMouseMsg == WM_LBUTTONDBLCLK) {  //雙擊鼠標 
		ShowWindow(SW_SHOWNOACTIVATE);    //恢復窗口的顯示
	}
	return 0;
}
  1. 爲菜單上的按鈕添加事件
ON_COMMAND(ID_32771, OnBnClickedButton1)
	ON_COMMAND(ID_32772, OnBnClickedButton2)
	ON_COMMAND(ID_32773, OnBnClickedButton3)
  1. 方法定義和實現
afx_msg void OnBnClickedButton3();
void CBcguess3Dlg::OnBnClickedButton3()
{
	// todo
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章