免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
桌面搜索-系統(tǒng)托盤 - 林建華的專欄

在程序最小化時(shí),不在windows的任務(wù)欄中出現(xiàn),而是在右下角的系統(tǒng)托盤中顯示一個(gè)小圖標(biāo),當(dāng)鼠標(biāo)單擊時(shí)顯示功能菜單,雙擊時(shí)打開主界面。這就是系統(tǒng)托盤程序的一般功能,想qq和很多桌面搜索程序都是這么做了,給人的感覺比較清爽,不用的時(shí)候就縮在一個(gè)小角落里,用的時(shí)候也能很快的找到。

在技術(shù)實(shí)現(xiàn)上

首先是創(chuàng)建托盤:

void CDiskSearchDlg::InitTray()
{
 m_NotifyID.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
 m_NotifyID.hWnd=this->m_hWnd;
 m_NotifyID.uID=IDR_MAINFRAME;
 m_NotifyID.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
 m_NotifyID.uCallbackMessage=WM_NOTIFYICON;//自定義的消息名稱
 m_NotifyID.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
 strcpy(m_NotifyID.szTip,"桌面搜索");//信息提示
 Shell_NotifyIcon(NIM_ADD,&m_NotifyID);//在托盤區(qū)添加圖標(biāo)
}

上面的代碼就是一個(gè)一般創(chuàng)建的方法,其中定義NOTIFYICONDATA m_NotifyID;

WM_NOTIFYICON是自定義的消息,我們可以用

#define WM_NOTIFYICON WM_USE+5

來定義

調(diào)用InitTray()后會(huì)在托盤上出現(xiàn)一個(gè)小圖標(biāo),當(dāng)然我們也同時(shí)要把任務(wù)欄中的程序任務(wù)去掉,只要調(diào)用ShowWindow(SW_HIDE)就可以了

接下來是創(chuàng)建一個(gè)菜單資源,假設(shè)為IDR_MENU_TP

然后要做的是添加WM_NOTIFYICON消息:

在BEGIN_MESSAGE_MAP(CDiskSearchDlg, CDialog)內(nèi)要添加

ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)//手工添加托盤消息映射

并定義函數(shù)

LONG CDiskSearchDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
 //wParam中是響應(yīng)消息的圖標(biāo)ID,lParam中則是Windows的消息
    switch ( lParam )
 {
 case WM_RBUTTONDOWN:
  {// 用戶在托盤圖標(biāo)上單擊鼠標(biāo)右鍵,彈出菜單
   CMenu pMenu;
   if (pMenu.LoadMenu(IDR_MENU_TP))
   {
    CMenu* pPopup = pMenu.GetSubMenu(0);
    ASSERT(pPopup != NULL);
    CPoint Point;
    GetCursorPos( &Point );
    SetForegroundWindow();
    pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, Point.x, Point.y, this);
   }          
  }
  break;
 case WM_LBUTTONDBLCLK:
//  OnMenuitemShow();
  break;
 case WM_LBUTTONDOWN:
  {// 用戶在托盤圖標(biāo)上單擊鼠標(biāo)右鍵,彈出菜單
   CMenu pMenu;
   if (pMenu.LoadMenu(IDR_MENU_TP))
   {
    CMenu* pPopup = pMenu.GetSubMenu(0);
    ASSERT(pPopup != NULL);
    CPoint Point;
    GetCursorPos( &Point );
    SetForegroundWindow();
    pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, Point.x, Point.y, this);
   }          
  }
  break;
 default:break;
 }
    return 0;
}

上面這段代碼中,添加了鼠標(biāo)單擊的消息,雙擊和其他消息其實(shí)是一樣的。

最后,在退出的時(shí)候記得要調(diào)用

Shell_NotifyIcon(NIM_DELETE, &m_NotifyID);

來把托盤圖標(biāo)刪除。

當(dāng)然還有做動(dòng)畫托盤,就是托盤上的圖標(biāo)是變化的,這個(gè)可以在上面的dlg類中添加Timer函數(shù),定時(shí)更換圖標(biāo)就可以了。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
給托盤添加右擊菜單--變化的背景圖
VC++如何在托盤區(qū)顯示程序圖標(biāo) >> 瀑布集
vc實(shí)現(xiàn)系統(tǒng)托盤圖標(biāo)
托盤圖標(biāo)
最小化Excel 至系統(tǒng)托盤
Delphi托盤編程實(shí)戰(zhàn)演練
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服