1. 程式人生 > >最小化到系統托盤,與系統托盤滑鼠操作

最小化到系統托盤,與系統托盤滑鼠操作

void CTimeWakeDlg::toTray()

  {

  NOTIFYICONDATA nid;

  nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);

  nid.hWnd=this->m_hWnd;

  nid.uID=IDR_MAINFRAME;

  nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;

  nid.uCallbackMessage=WM_SHOWTASK;//自定義的訊息名稱

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

  strcpy(nid.szTip,"計劃任務提醒");//資訊提示條為“計劃任務提醒”

  Shell_NotifyIcon(NIM_ADD,&nid);//在托盤區新增圖示

  ShowWindow(SW_HIDE);//隱藏主視窗

  }
LRESULT CTimeWakeDlg::onShowTask(WPARAM wParam,LPARAM lParam)

  //wParam接收的是圖示的ID,而lParam接收的是滑鼠的行為

  {

  if(wParam!=IDR_MAINFRAME)

  return 1;

  switch(lParam)

  {

  case WM_RBUTTONUP://右鍵起來時彈出快捷選單,這裡只有一個“關閉”

  {

  LPPOINT lpoint=new tagPOINT;

  ::GetCursorPos(lpoint);//得到滑鼠位置

  CMenu menu;

  menu.CreatePopupMenu();//宣告一個彈出式選單

  //增加選單項“關閉”,點選則傳送訊息WM_DESTROY給主視窗(已

  //隱藏),將程式結束。

  menu.AppendMenu(MF_STRING,WM_DESTROY,"關閉");

  //確定彈出式選單的位置

  menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);

  //資源回收

  HMENU hmenu=menu.Detach();

  menu.DestroyMenu();

  delete lpoint;

  }

  break;

  case WM_LBUTTONDBLCLK://雙擊左鍵的處理

     { 

  this->ShowWindow(SW_SHOW);//簡單的顯示主視窗完事兒

  }

  break;

  }

  return 0;

  }