天天看點

windows系統托盤及托盤菜單

windows系統托盤及托盤菜單

window系統托盤及托盤菜單 下面是一個MFC寫的wifi助手程式用于實作系統托盤的代碼片段

void CWiFiAssistantDlg::OnClose()

{

 // TODO: 在此添加消息處理程式代碼和/或調用預設值

 ExitPtDlg exitPtDlg;

 int varReturn = exitPtDlg.DoModal();

 if(varReturn == IDOK)

 {

  preExit();

  CDialogEx::OnClose();

 }

 else //在通盤顯示程式圖示

 {

  NOTIFYICONDATA tnd;

  tnd.cbSize=sizeof(NOTIFYICONDATA);

  tnd.hWnd=this->m_hWnd; // 要顯示托盤圖示的視窗句柄

  tnd.uID=IDR_MAINFRAME; //程式圖示資源ID

  tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

  tnd.uCallbackMessage=WM_MYMESSAGE_CLICK; //自定義消息,當圖示發送事件時會向視窗發送此消息,會在視窗過程函數接收到此消息,接收到消息時進行你的處理

  tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));

  lstrcpy(tnd.szTip, L"WiFi助手");//圖示提示為”WiFi助手”

  Shell_NotifyIcon(NIM_ADD,&tnd);//向工作列添加圖示

  ShowWindow(SW_HIDE);

 }

}

LRESULT CWiFiAssistantDlg::OnMyMessageClick(WPARAM wParam, LPARAM lParam) //MFC裡的自定義消息處理函數

{

 UINT uID;//發出該消息的圖示的ID

 UINT uMouseMsg;//滑鼠動作

 POINT pt;

 uID=(UINT) wParam;

 uMouseMsg=(UINT) lParam;

 if(uMouseMsg == WM_LBUTTONDBLCLK)//如果是輕按兩下左鍵

 {

  switch(uID)

  {

   case IDR_MAINFRAME://如果是我們的圖示

    GetCursorPos(&pt);//取得滑鼠位置

    ShowWindow(SW_SHOWNORMAL);

    SetForegroundWindow();

   break;

  }

 }

 else if(uMouseMsg == WM_RBUTTONDOWN)//如果是單擊右鍵

 {

  CMenu menuTray, *pPopup;

  CPoint point;

  GetCursorPos(&point);

  menuTray.LoadMenuW(IDR_MENU1); //從資源載入菜單

  pPopup=menuTray.GetSubMenu(0); //獲得子菜單指針

  pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y,this); //設定菜單顯示位置并顯示

  pPopup->Detach();

  menuTray.DestroyMenu();

 }

 return 0;

}

void CWiFiAssistantDlg::preExit() //程式退出時調用

{

 NOTIFYICONDATA tnid;

 tnid.cbSize=sizeof(NOTIFYICONDATA);

 tnid.hWnd=GetSafeHwnd();

 tnid.uID=IDR_MAINFRAME; //保證删除的是我們的圖示

 Shell_NotifyIcon(NIM_DELETE, &tnid);

}

//菜單項對應處理函數

void CWiFiAssistantDlg::OnMenuShow()

{

 SetForegroundWindow();

 ShowWindow(SW_SHOWNORMAL);

 // TODO: 在此添加指令處理程式代碼

}

//菜單項對應處理函數

void CWiFiAssistantDlg::OnMenuExit()

{

 // TODO: 在此添加指令處理程式代碼

 preExit();

 OnOK();

}

繼續閱讀