<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    托盤圖標

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接 一、NOTIFYICONDATA結構  NOTIFYICONDATA結構包含了系統用來處理托盤圖標的信息,它包括選擇的圖標、回調消息、提示消息、圖標對應的窗口等內容。其定義為:     typedef struct _NOTIFYICONDATA {  //以字節為單位的這個結構的大小         DWORD cbSize;           //接收托盤圖標通知消息的窗口句柄         HWND hWnd;          //應用程序定義的該圖標的ID號         UINT uID;  //設置該圖標的屬性         UINT uFlags;           //應用程序定義的消息ID號,此消息傳遞給hWnd         UINT uCallbackMessage;       //圖標的句柄         HICON hIcon;                //鼠標停留在圖標上顯示的提示信息       char szTip[64];               } NOTIFYICONDATA, *PNOTIFYICONDATA;      該結構中,成員uFlags可以使下列之一或組合:     NIF_ICON        設置成員hIcon有效     NIF_MESSAGE    設置成員uCallbackMessage有效     NIF_TIP           設置成員szTip有效   二、Shell_NotifyIcon函數  全局函數Shell_NotifyIcon() 用于在托盤上增加、刪除或修改圖標。其原型為:              WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid);   Pnid是上面的NOTIFYICONDATA結構的指針;  dwMessage是被傳遞的消息,可以是以下消息之一:                NIM_ADD             增加圖標               NIM_DELETE          刪除圖標               NIM_MODIFY          修改圖標   三、托盤圖標程序設計示例  首先我們用AppWizard創建一個基于對話框的應用程序CUserDlg。m_nid為類成員變量 void CUserDlg::ToTray() { m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);  m_nid.hWnd = this->m_hWnd;  m_nid.uID = IDR_MAINFRAME;  m_nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ;  m_nid.uCallbackMessage =UM_SHOWTASK;   //自定義的消息名稱 UM_SHOWTASK 頭函數中定義為WM_USER+1 m_nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));  strcpy(m_nid.szTip,"托盤圖標\nMzfAntiVirus的防護已經開啟");//當鼠標放在上面時,所顯示的內容  Shell_NotifyIcon(NIM_ADD,&m_nid);//在托盤區添加圖標  }   四.添加消息UM_SHOWTASK的響應函數 afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);   添加消息映射: ON_MESSAGE(UM_SHOWTASK,onShowTask)   編寫該函數: LRESULT CUserDlg::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_SHOWNORMAL);//簡單的顯示主窗口    }     break;  }  return 0;  }    然后在OnInitDialog函數中調用ToTray();   五為使應用程序退出時圖標消失,映射WM_DESTROY消息,在OnDestroy()函數中加入:  ::Shell_NotifyIcon(NIM_DELETE,&m_tnid);   六。至此,托盤圖標程序的常規功能我們均已實現。我們還可以通過Shell_NotifyIcon()函數的調用實現不同狀態 下圖標的改變,就象金山詞霸在主窗口打開與暫停取詞時圖標有所改變一樣。 它常 用來顯示一些系統的狀態。如: 系統時間,音量控制以及其它的一些圖標RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全