自己動手寫類似酷狗播放器(4)_系統托盤的顯示
任何一個應用程式,在開啟後都會在工作列的又下角顯示一個圖示,用來表示這個應用程式已經開啟,比如QQ.那是如何做到 的呢?其實也是很簡單,就是填充NOTIFYICONDATA結構體,這時候就需要對該結構體有個瞭解了,查詢MSDN手冊如下:
步驟:
1.填充NOTIFYICONDATA結構體
訊息處理:當系統托盤圖示發生滑鼠事件時候,會給windows傳送一個ucallbackmessage事件,去到指定視窗函式中響應。
wParam:這時指的是 UID欄位的值
lparam : 此時附帶的滑鼠動作 比如滑鼠左鍵按下,右鍵按下,雙擊等等。比如,當滑鼠在托盤圖示移動的時候,lParam引數就傳送WM_MOUSEMOVE事件。
2呼叫shell_notifyIcon 函式來增加或者刪除圖示
BOOL Shell_NotifyIcon(
DWORD dwMessage, //引數1:訊息的種類 NIM_ADD/DELETE/MOTIFY 圖示的新增,刪除和更改
PNOTIFYICONDATA pnid //引數2: NOTIFYICONdata結構體的指標
);
以上兩個步驟就可以顯示一個系統托盤,但是這是沒用的,因為並不會響應任何操作,所以我們接下來要做的就是加入訊息處理
3.新增觸發事件
目的:當點選系統圖示左鍵顯示主對話方塊,右鍵彈出選單項
當滑鼠在托盤區域發生動作時候,就會產生NOTIFYICONDATA第五個引數的事件,我們這裡是用自定義的事件
#define WM_TRAYMSG WM_USER+1 //自定義事件
也就是說當托盤區域的滑鼠動作時,觸發該事件,在這個事件下,來處理左鍵和右鍵。 case WM_TRAYMSG: //響應自定義托盤事件
{
if(wParam==1) //先判斷是否是在圖示區域發生 1就是NOTIFYICONDATA 中UID 的數值
{
switch(lParam)
{
case WM_LBUTTONDOWN: //滑鼠左鍵按下 顯示主介面
{
ShowWindow(hDlg_main,SW_SHOWNORMAL);//正常顯示主介面
// SetForegroundWindow(hDlg_main);
return 0;
}
case WM_RBUTTONDOWN: //右鍵載入選單項
{
POINT point;
GetCursorPos(&point); //獲取滑鼠點選的位置
HMENU hpopupmenu=CreatePopupMenu(); //建立彈出選單
HMENU hmenu_playmode=GetSubMenu(GetSubMenu(hmenu,0),2); //獲取控制條目子選單控制程式碼
AppendMenu(hpopupmenu,MF_STRING,IDM_PAUSEORSTART,TEXT("暫停/繼續"));
AppendMenu(hpopupmenu,MF_SEPARATOR,NULL,NULL); //新增下劃線
AppendMenu(hpopupmenu,MF_POPUP,(UINT)hmenu_playmode,TEXT("播放模式"));
AppendMenu(hpopupmenu,MF_SEPARATOR,NULL,NULL); //新增下劃線
AppendMenu(hpopupmenu,MF_STRING,IDM_QUIT,TEXT("退出"));
SetForegroundWindow(hDlg_main);//必須要設定所在的視窗為前臺
TrackPopupMenu(hpopupmenu,TPM_RIGHTBUTTON,point.x,point.y,0,hDlg_main,NULL); //顯示選單項
return 0;
}
}
}
break;
}
注意在上面的右鍵操作中處理,在選單彈出前,必須將該選單所在的視窗設定為前臺視窗,不然這個選單隻能顯示,當點選任意其他地方都是消失的。
相關文章
- 自己動手寫類似酷狗播放器(4)_滑鼠右鍵選單的新增播放器
- 自己動手寫類似酷狗播放器(2)_音樂播放模組實現播放器
- 自己動手寫類似酷狗播放器(3)_Slider控制元件使用播放器IDE控制元件
- 自己動手寫類似酷狗播放器(6)_UI初步改善_新增背景色播放器UI
- 自己動手寫類似酷狗播放器(5)_檔案的儲存和讀取播放器
- 自己動手寫類似酷狗播放器(1)_建立一個基於對話方塊模板播放器
- Winform設定托盤程式,托盤顯示ORM
- 系統托盤建立M4
- 系統托盤中的快捷圖示(轉)
- 在托盤上顯示Balloon Tooltip
- 在托盤上顯示Balloon Tooltip (轉)
- 系統托盤建立
- 【Qt開發】實現系統托盤,托盤選單,托盤訊息QT
- div顯示滾動條(類似合同閱讀)
- win10托盤圖示不顯示怎麼回事_win10工作列托盤圖示顯示不完全如何修復Win10
- Windows10系統怎麼隱藏托盤圖示Windows
- 在托盤上顯示Balloon Tooltip(VB.NET) (轉)
- Java中如何使用系統托盤Java
- 自己動手從零寫桌面作業系統GrapeOS系列教程——14.螢幕顯示原理與文字模式作業系統模式
- Windows 7系統下QQ來訊息是酷狗播放器聲音變小Windows播放器
- win7系統隱藏NVIDIA托盤圖示的操作方法Win7
- 360奇酷手機通知欄怎麼顯示流量 360奇酷手機通知欄顯示流量教程
- 自己動手寫作業系統(第一天)作業系統
- 全面剖析《自己動手寫作業系統》的pmtest1.asm作業系統ASM
- 自己動手寫PromisePromise
- 【like-react】手寫一個類似 react 的框架React框架
- Avalonia 實現動態托盤
- 如何讓java程式最小化至系統托盤Java
- 自己動手寫一個 SimpleVueVue
- 自己動手寫 PHP 框架(一)PHP框架
- win10系統下如何去掉酷狗音樂廣告Win10
- 關於對話方塊最小化到托盤後,點選托盤圖示後只在工作列顯示而無法還原視窗的解決方法。
- 手機寫作業系統之 製作第1個啟動盤作業系統
- 按概率生成隨機結果,自己控制字元結果的生成類似彩票系統隨機字元
- 酷狗面試感想面試
- 樂視超級手機系統介面曝光 類似蘋果iOS風格蘋果iOS
- 自己動手編譯播放器MPC-HC的原始碼編譯播放器原始碼
- VC編制系統托盤的一種實現方法[習作]