系統(tǒng)托盤(pán)的使用技巧
2019/3/18 15:58:31??????點(diǎn)擊:
設(shè)置NOTIFYICONDATA型的結(jié)構(gòu)體變量的成員變量的值: cbSize 該結(jié)構(gòu)體的大小。 hwnd 窗口的句柄。當(dāng)鼠標(biāo)滑過(guò)該小圖標(biāo)時(shí),該窗口將接收到相關(guān)的消息。 uID 小圖標(biāo)的ID號(hào)。您可以取任意值,只是當(dāng)您的應(yīng)用程序有不止一個(gè)小圖標(biāo)時(shí),您要能夠區(qū)分出到底是那一個(gè)小圖標(biāo)接收到了鼠標(biāo)的消息,也即ID號(hào)必須唯一。 uFlags 指定該結(jié)構(gòu)體變量的那些成員變量有效。 NIF_ICON 有效。 NIF_MESSAGE 有效。 NIF_TIP 有效。 uCallbackMessage 自定義的消息。當(dāng)鼠標(biāo)對(duì)小圖標(biāo)動(dòng)作時(shí),WINDOWS外殼將把該消息發(fā)送到您的應(yīng)用程序。該消息的值您可以自己定義。 hIcon 放入系統(tǒng)托盤(pán)中的圖標(biāo)的句柄。 szTip 64字節(jié)的緩沖區(qū),它用來(lái)放入提示字符串,當(dāng)鼠標(biāo)停留在小圖標(biāo)上時(shí),就會(huì)顯示該字符串。 調(diào)用Shell_NotifyIcon函數(shù)。該函數(shù)在shell32.inc中定義,其原型如下:
Shell_NotifyIcon PROTO dwMessage:DWORD ,pnid:DWORD dwMessage 是發(fā)送到WINDOWS外殼的消息:
NIM_ADD 把小圖標(biāo)加到系統(tǒng)托盤(pán)區(qū)。
NIM_DELETE 從系統(tǒng)托盤(pán)中刪除小圖標(biāo)。
NIM_MODIFY 修改小圖標(biāo)。
pnid 是指向NOTIFYICONDATA型結(jié)構(gòu)體變量的指針。
如果您想要加入一個(gè)小圖標(biāo)就用NIM_ADD,刪除時(shí)使用NIM_DELETE消息。
基本上的消息就是這些。但是大多數(shù)的情況下,您不會(huì)僅僅滿足把一個(gè)小圖標(biāo)放到那里。您還必須要對(duì)鼠標(biāo)事件作出適當(dāng)?shù)姆磻?yīng)。您可以在NOTIFYICONDATA型的結(jié)構(gòu)體變量的成員變量uCallbackMessage 中設(shè)置您要處理的消息,然后WINDOWS外殼將在發(fā)生這些事件時(shí)通知您的應(yīng)用程序。隨著消息傳送的參數(shù)wParam和lParam的值如下:
wParam 小圖標(biāo)的ID號(hào)。它和您在NOTIFYICONDATA型結(jié)構(gòu)體變量中的成員變量uID中設(shè)置的值一樣。 lParam 低字包含鼠標(biāo)消息。譬如,用戶在小圖標(biāo)上按下了右鍵時(shí),lParam中將包含WM_RBUTTONDOWN消息。 大多數(shù)的系統(tǒng)托盤(pán)中的小圖標(biāo),在用戶用鼠標(biāo)右擊時(shí)都會(huì)彈出一個(gè)菜單以方便用戶選擇。我們可先創(chuàng)建菜單,然后調(diào)用TrackPopupMenu函數(shù)來(lái)顯示它。步驟如下:
調(diào)用CreatePopupMenu函數(shù)來(lái)創(chuàng)建菜單。該函數(shù)創(chuàng)建一個(gè)空的菜單。如果成功,將在eax中返回該菜單的句柄。 調(diào)用AppendMenu, InsertMenu 或 InsertMenuItem來(lái)向菜單中加入菜單項(xiàng)。 當(dāng)您想在當(dāng)前鼠標(biāo)位置顯示該菜單時(shí),調(diào)用GetCursorPosition函數(shù)來(lái)得到鼠標(biāo)當(dāng)前的屏幕位置,然后調(diào)用TrackPopupMenu來(lái)顯示菜單。當(dāng)用戶從彈出式菜單中選擇了一個(gè)菜單項(xiàng)時(shí),WINDOWS將發(fā)送WM_COMMAND消息給您應(yīng)用程序的消息處理過(guò)程,這和通常的菜單選擇是一樣的。
Shell_NotifyIcon PROTO dwMessage:DWORD ,pnid:DWORD dwMessage 是發(fā)送到WINDOWS外殼的消息:
NIM_ADD 把小圖標(biāo)加到系統(tǒng)托盤(pán)區(qū)。
NIM_DELETE 從系統(tǒng)托盤(pán)中刪除小圖標(biāo)。
NIM_MODIFY 修改小圖標(biāo)。
pnid 是指向NOTIFYICONDATA型結(jié)構(gòu)體變量的指針。
如果您想要加入一個(gè)小圖標(biāo)就用NIM_ADD,刪除時(shí)使用NIM_DELETE消息。
基本上的消息就是這些。但是大多數(shù)的情況下,您不會(huì)僅僅滿足把一個(gè)小圖標(biāo)放到那里。您還必須要對(duì)鼠標(biāo)事件作出適當(dāng)?shù)姆磻?yīng)。您可以在NOTIFYICONDATA型的結(jié)構(gòu)體變量的成員變量uCallbackMessage 中設(shè)置您要處理的消息,然后WINDOWS外殼將在發(fā)生這些事件時(shí)通知您的應(yīng)用程序。隨著消息傳送的參數(shù)wParam和lParam的值如下:
wParam 小圖標(biāo)的ID號(hào)。它和您在NOTIFYICONDATA型結(jié)構(gòu)體變量中的成員變量uID中設(shè)置的值一樣。 lParam 低字包含鼠標(biāo)消息。譬如,用戶在小圖標(biāo)上按下了右鍵時(shí),lParam中將包含WM_RBUTTONDOWN消息。 大多數(shù)的系統(tǒng)托盤(pán)中的小圖標(biāo),在用戶用鼠標(biāo)右擊時(shí)都會(huì)彈出一個(gè)菜單以方便用戶選擇。我們可先創(chuàng)建菜單,然后調(diào)用TrackPopupMenu函數(shù)來(lái)顯示它。步驟如下:
調(diào)用CreatePopupMenu函數(shù)來(lái)創(chuàng)建菜單。該函數(shù)創(chuàng)建一個(gè)空的菜單。如果成功,將在eax中返回該菜單的句柄。 調(diào)用AppendMenu, InsertMenu 或 InsertMenuItem來(lái)向菜單中加入菜單項(xiàng)。 當(dāng)您想在當(dāng)前鼠標(biāo)位置顯示該菜單時(shí),調(diào)用GetCursorPosition函數(shù)來(lái)得到鼠標(biāo)當(dāng)前的屏幕位置,然后調(diào)用TrackPopupMenu來(lái)顯示菜單。當(dāng)用戶從彈出式菜單中選擇了一個(gè)菜單項(xiàng)時(shí),WINDOWS將發(fā)送WM_COMMAND消息給您應(yīng)用程序的消息處理過(guò)程,這和通常的菜單選擇是一樣的。
- 上一篇:系統(tǒng)托盤(pán)常見(jiàn)的問(wèn)題 2019/3/18
- 下一篇:系統(tǒng)托盤(pán) 2019/3/18