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

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VB如何實(shí)現(xiàn)托盤圖標(biāo)


★思路:
實(shí)現(xiàn)托盤:具體的代碼你到網(wǎng)上搜,很好找的,主要是利用Shell_Icon這個(gè)函數(shù)添加托盤,然后再用最簡單的那個(gè)Hide隱藏主窗口,就可以了比如Shell_Icon之后Form1.Hide
右鍵有菜單:首先你必須要建好一個(gè)菜單,可以用那個(gè)“菜單編輯器”做但是要把那個(gè)菜單做成控件數(shù)組的形式(這個(gè)你明白不?),然后把那個(gè)菜單的“可見”屬性設(shè)成不可見,好,菜單建好了,就應(yīng)該有右鍵點(diǎn)擊之后彈出的效果,右鍵點(diǎn)擊肯定是在MouseDown那個(gè)事件里面做,判斷當(dāng)右鍵點(diǎn)擊并且鼠標(biāo)坐標(biāo)是在托盤后的位置時(shí)彈出,彈出有一個(gè)函數(shù)可以用popupmenu這個(gè)函數(shù)比如Form1下的Form1.popupmenu 菜單的ID號(hào)就可以彈出菜單了
★詳細(xì)過程:
如何做到當(dāng)我們單擊窗口的最小化按鈕時(shí),窗口先最小化到任務(wù)欄成為按鈕,然后消失,圖標(biāo)顯示到通知欄呢?大家熟悉的FoxMail能做到,我們也可以做到。
  只要我們能截獲最小化這個(gè)事件發(fā)送給窗口的消息,然后換成我們自定義的過程,問題就解決了。大家仔細(xì)想一想,當(dāng)按下最小化按紐時(shí)會(huì)引發(fā)什么事件?最小化時(shí)窗口大小會(huì)發(fā)生變化會(huì)引發(fā)Form1.Resize事件,我們只要在Form1.Resize事件里用Form1.Visible = False使窗口消失,然后將窗口圖標(biāo)顯示到通知欄即可達(dá)到我們想要的效果。

怎樣判斷發(fā)生Resize事件時(shí)窗口是最小化狀態(tài)呢?VB里沒有現(xiàn)成的做法,我們可以用非富的API函數(shù)。API函數(shù)庫里有一個(gè)函數(shù)IsIconic(ByVal hwnd As Long),它就是專門判斷窗口是否已最小化的。這樣當(dāng)Form產(chǎn)生Resize事件時(shí),用IsIconic函數(shù)判斷一下窗口是否為最小化狀態(tài),就可知道是否用戶按了最小化按鈕。
  最關(guān)鍵的一步就是將圖標(biāo)顯示在通知欄里,VB里沒有現(xiàn)成的做法,我們還得用API函數(shù)。API函數(shù)庫里有一個(gè)函數(shù)Shell_NotifyIcon(ByVal dwMessage As Long, lpData As NOTIFYICONDATA),是專門操作(包括添加、修改、刪除)通知欄里圖標(biāo)的。
  點(diǎn)一下通知欄圖標(biāo),會(huì)出現(xiàn)一些諸如"退出"、"顯示窗口"的彈出菜單,怎樣實(shí)現(xiàn)彈出菜單呢?這個(gè)很容易實(shí)現(xiàn),因?yàn)辄c(diǎn)擊圖標(biāo)會(huì)觸發(fā)圖標(biāo)所在窗口的MouseDown事件,我們把彈出菜單觸發(fā)過程寫入Form1_MouseDown事件即可。具體例程如下:
  第一步、為了增強(qiáng)程序的可移植性,我們新建一個(gè)模塊,取名為:NoticeIcon,在此模塊中定義一些常量、自定義類型、所需的API函數(shù)說明及操作通知欄圖標(biāo)的三個(gè)自定義函數(shù)(添加、修改、刪除),模塊NoticeIcon具體代碼如下所示: 

Public Const DefaultIconIndex = 1 '圖標(biāo)缺省索引
Public Const WM_LBUTTONDOWN = &H201 '按鼠標(biāo)左鍵
Public Const WM_RBUTTONDOWN = &H204 '按鼠標(biāo)右鍵
Public Const NIM_ADD = 0 '添加圖標(biāo)
Public Const NIM_MODIFY = 1 '修改圖標(biāo)
Public Const NIM_DELETE = 2 '刪除圖標(biāo)
Public Const NIF_MESSAGE = 1 'message 有效
Public Const NIF_ICON = 2 '圖標(biāo)操作(添加、修改、刪除)有效
Public Const NIF_TIP = 4 'ToolTip(提示)有效
'API函數(shù)聲明
'圖標(biāo)操作
Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
'判斷窗口是否最小化
Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
'
'設(shè)置窗口位置和狀態(tài)(position)的功能
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'定義類型
'通知欄圖標(biāo)狀態(tài)
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
'函數(shù)定義
'添加圖標(biāo)至通知欄
Public Function Icon_Add(iHwnd As Long, sTips As String, hIcon As Long, IconID As Long) As Long
 '參數(shù)說明:iHwnd:窗口句柄,sTips:當(dāng)鼠標(biāo)移到通知欄圖標(biāo)上時(shí)顯示的提示內(nèi)容
 'hIcon:圖標(biāo)句柄,IconID:圖標(biāo)Id號(hào)
 Dim IconVa As NOTIFYICONDATA
 With IconVa
  .hwnd = iHwnd
  .szTip = sTips + Chr$(0)
  .hIcon = hIcon
  .uID = IconID
  .uCallbackMessage = WM_LBUTTONDOWN
  .cbSize = Len(IconVa)
  .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
  Icon_Add = Shell_NotifyIcon(NIM_ADD, IconVa)
 End With
End Function
'刪除通知欄圖標(biāo)(參數(shù)說明同Icon_Add)
Function Icon_Del(iHwnd As Long, lIndex As Long) As Long
 Dim IconVa As NOTIFYICONDATA
 Dim L As Long
 With IconVa
  .hwnd = iHwnd
  .uID = lIndex
  .cbSize = Len(IconVa)
 End With
 Icon_Del = Shell_NotifyIcon(NIM_DELETE, IconVa)
End Function
'修改通知欄圖標(biāo)(參數(shù)說明同Icon_Add)
Public Function Icon_Modify(iHwnd As Long, sTips As String, hIcon As Long, IconID As Long) As Long
 Dim IconVa As NOTIFYICONDATA
 With IconVa
  .hwnd = iHwnd
  .szTip = sTips + Chr$(0)
  .hIcon = hIcon
  .uID = IconID
  .uCallbackMessage = WM_LBUTTONDOWN
  .cbSize = Len(IconVa)
  .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
  Icon_Modify = Shell_NotifyIcon(NIM_MODIFY, IconVa)
 End With
End Function
用VB實(shí)現(xiàn)窗口圖標(biāo)最小化到通系統(tǒng)托盤(二)
第二步:新建一窗口,取名為:Form1:
  1、 設(shè)置屬性如下:

1、 設(shè)置屬性如下:
.Name=Form1
.Caption="通知欄圖標(biāo)測試"
.Icon=(Icon),選擇一個(gè)漂亮的圖標(biāo)
其它默認(rèn)即可
  2、 設(shè)置窗口全局變量,并設(shè)置初始值
'用于標(biāo)識(shí)窗口是否已經(jīng)按過最小化按紐
Dim MinFlag As Boolean
Private Sub Form1_Load()
 MinFlag = False
End Sub
  3、 窗口最小化時(shí)產(chǎn)生Resize事件,設(shè)置Form1.Resize事件,判斷窗口是否最小化
Private Sub Form1_Resize()
 '判斷窗口是否最小化狀態(tài),并且是按最小化按紐后第一次發(fā)生Resize事件
 If IsIconic(Me.hwnd) <> 0 And MinFlag = False Then
  MinFlag = True
  IcCardMain.Visible = False '隱藏窗口
  '將窗口圖標(biāo)加入通知欄
  Call Icon_Add(Me.hwnd, Me.Caption, IcCardMain.Icon, 0)
 End If
End Sub
  4、如圖所示用菜單設(shè)計(jì)器建一個(gè)彈出菜單,取名為main,main內(nèi)有一個(gè)菜單數(shù)組:
  菜單一:m_Menu(0) 標(biāo)題:顯示窗口
  菜單二:m_Menu(1))標(biāo)題:退出
  菜單事件:
Private Sub m_Menu_Click(Index As Integer)
 Select Case Index
  Case 0: '當(dāng)單擊"顯示窗口"菜單時(shí)
   Call Icon_Del(Form1.hwnd, 0) '刪除通知欄圖標(biāo)
   Form1.Show '調(diào)出窗口
  Case 1: '當(dāng)單擊"退出"菜單時(shí)
   Call Icon_Del(Form1.hwnd, 0) '刪除通知欄圖標(biāo)
   End '退出程序
 End Select
End Sub
  5、設(shè)置Form_MouseDown事件,用于單通知欄圖標(biāo)時(shí)調(diào)出彈出菜單
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 Dim L
 L = X \ 15
 '點(diǎn)擊通知欄圖標(biāo),用鼠標(biāo)右鍵時(shí)調(diào)出彈出菜單
 IF L = WM_LBUTTONDOWN Then
  Me.PopupMenu m_Main
  '點(diǎn)擊通知欄圖標(biāo),用鼠標(biāo)左鍵時(shí),將通知欄圖標(biāo)改為另外的圖標(biāo)
 ElseIF L = WM_LBUTTONDOWN Then
  Call Icon_Modify(Form1.hwnd,Form1.Caption, LoadPicture("D:\Pic2.ico"), 0)
 End If
End Sub
  程序編寫完畢,設(shè)置工程的主程序?yàn)镕orm1,保存后運(yùn)行。按下窗口最小化按紐,窗口消失,并在通知欄顯示出窗口的圖標(biāo);將鼠標(biāo)移到圖標(biāo)上,有"通知欄圖標(biāo)測試"提示文本顯示;用鼠標(biāo)左鍵單擊通知欄圖標(biāo),圖標(biāo)變成另外的圖案;單出鼠標(biāo)右鍵,出現(xiàn)如上圖所示的彈出菜單,接著單擊彈出菜單"顯示窗體",通知欄圖標(biāo)消失、窗口又恢復(fù)成原來的樣子了,單擊菜單"退出"則退出程序了。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
最小化Excel 至系統(tǒng)托盤
VBA實(shí)用小程序04:在用戶窗體標(biāo)題欄添加最大化和最小化按鈕
讓access系統(tǒng)窗口的最大化、最小化消失的代碼
VB在系統(tǒng)托盤為程序添加圖標(biāo)
將我自已的命令加入窗體的控制菜單欄
使用messageboxtimeout api函數(shù)實(shí)現(xiàn)自動(dòng)關(guān)閉的msgbox
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服