乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       accesine 2005-08-27

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

      在技術(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)
      }

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

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

      #define WM_NOTIFYICON WM_USE+5

      來定義

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

      接下來是創(chuàng)建一個菜單資源,假設(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)單擊的消息,雙擊和其他消息其實是一樣的。

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

      Shell_NotifyIcon(NIM_DELETE, &m_NotifyID);

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

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

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多