參數(shù): | 意義 |
dwMessage | 為消息設(shè)置值,它可以是以下的幾個常數(shù)值:0、1、2 NIM_ADD = 0 加入圖標(biāo)到系統(tǒng)狀態(tài)欄中 NIM_MODIFY = 1 修改系統(tǒng)狀態(tài)欄中的圖標(biāo) NIM_DELETE = 2 刪除系統(tǒng)狀態(tài)欄中的圖標(biāo) |
LpData | 用以傳入NOTIFYICONDATA數(shù)據(jù)結(jié)構(gòu)變量,其結(jié)構(gòu)如下所示: Type NOTIFYICONDATA cbSize As Long 需填入NOTIFYICONDATA數(shù)據(jù)結(jié)構(gòu)的長度 HWnd As Long 設(shè)置成窗口的句柄 Uid As Long 為圖標(biāo)所設(shè)置的ID值 UFlags As Long 設(shè)置uCallbackMessage,hIcon,szTip是否有效 UCallbackMessage As Long 消息編號 HIcon As Long 顯示在狀態(tài)欄上的圖標(biāo) SzTip As String * 64 提示信息 End Type |
返回值 | Long,非零表示成功,零表示失敗 |
在使用這個API函數(shù)之前我們應(yīng)該先定義結(jié)構(gòu)類型NOTIFYICONDATA:
Public Type NOTIFYICONDATA
cbSize As Long HWnd As Long
Uid As Long UFlags As Long
UCallbackMessage As Long
HIcon As Long
SzTip As String * 64
End Type
然后定義一個NOTIFYICONDATA的變量TheData來記錄設(shè)置托盤圖標(biāo)的數(shù)據(jù)
Private TheData As NOTIFYICONDATA
這時我們就可以使用這個函數(shù)來設(shè)置系統(tǒng)托盤圖標(biāo)了,具體方法如下:
1、添加圖標(biāo)
With TheData
.Uid = 0
.HWnd = frm.HWnd 'frm.HWnd是程序主窗體的句柄
.cbSize = Len(TheData)
.HIcon = frm.Icon.Handle 'frm.Icon.Handle指向主窗體的圖標(biāo)
.UFlags = NIF_ICON
.UCallbackMessage = TRAY_CALLBACK '作用是允許返回消息,在下一節(jié)中會有詳細(xì)解釋。
.UFlags = .UFlags Or NIF_MESSAGE
.cbSize = Len(TheData)
End With
Shell_NotifyIcon NIM_ADD, TheData '根據(jù)前面定義NIM_ADD,設(shè)置為“添加模式”,然后添加
2、刪去圖標(biāo)
With TheData
.UFlags = 0
End With
Shell_NotifyIcon NIM_DELETE, TheData '根據(jù)前面定義NIM_DELETE,設(shè)置為“刪除模式”
3、更改圖標(biāo)
With TheData
.HIcon = pic.Handle 'pic是圖片狂PictureBox,存放圖標(biāo)文件
.UFlags = NIF_ICON
End With
Shell_NotifyIcon NIM_MODIFY, TheData '根據(jù)前面定義NIM_MODIFY,設(shè)置為“更改模式”
4、為圖標(biāo)添加浮動提示信息
With TheData
.SzTip = tip & vbNullChar 'tip是字符串string,存儲提示信息
.UFlags = NIF_TIP '指明要對浮動提示進(jìn)行設(shè)置
End With
Shell_NotifyIcon NIM_MODIFY, TheData '根據(jù)前面定義NIM_MODIFY,設(shè)置為“修改模式”
通過以上幾段代碼我們就能根據(jù)自己需要添加、刪除、更改系統(tǒng)托盤圖標(biāo),并能添加系統(tǒng)圖標(biāo)上的浮動提示信息。但這時的托盤圖標(biāo)是孤立的,我們并不能利用它來控制應(yīng)用程序的行為,怎么辦呢?別急,接著下節(jié)的內(nèi)容會繼續(xù)這個例子的介紹,并給你答案的。