国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
托盤程序詳解(一)

 很多軟件運行時會在系統(tǒng)托盤區(qū)(就是桌面右下角顯示時間的區(qū)域)出現(xiàn)一個小圖標(biāo),它作為程序運行的一個標(biāo)志,我們可以通過使用小圖標(biāo)所彈出的菜單來控制應(yīng)用程序的狀態(tài)。本例就給出了一個功能比較完整的托盤程序,我們可以看到怎樣用API函數(shù)Shell_NotifyIcon來添加、刪除、更改托盤圖標(biāo);而且例中還演示了為托盤圖標(biāo)添加右鍵菜單和浮動提示的方法。

  為了學(xué)習(xí)方便,提供的源碼已經(jīng)作了詳細(xì)的中文注釋,看看源碼框中的代碼:

  程序中用到了Shell_NotifyIcon、SendMessage、CallWindowProc、SetWindowLong等API函數(shù),其中Shell_NotifyIcon是主要的函數(shù),它用來添加、刪除、更改系統(tǒng)托盤區(qū)(taskbar status area)的圖標(biāo),所以我們先來看看這個函數(shù)的聲明和參數(shù):

  使用API函數(shù)之前必須先在程序中聲明如下:
  Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

  其中各參數(shù)的意義如下表:

參數(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ù)這個例子的介紹,并給你答案的。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
vb右鍵點擊托盤的圖標(biāo)彈出菜單,怎樣實現(xiàn)?
系統(tǒng)托盤編程_平臺/系統(tǒng)_VC技術(shù)文章
vC++ 系統(tǒng)托盤圖標(biāo)實現(xiàn)
托盤編程全接觸
VC++如何在托盤區(qū)顯示程序圖標(biāo) >> 瀑布集
vc實現(xiàn)系統(tǒng)托盤圖標(biāo)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服