永发信息网

vb程序如何将图标放入工具栏

答案:1  悬赏:0  手机版
解决时间 2021-08-10 20:30
vb程序如何将图标放入工具栏
最佳答案

'窗体代码
Private lpTrayIconData As NOTIFYICONDATA


Private Sub Form_Load()
    With lpTrayIconData
    .cbSize = Len(lpTrayIconData)
    .hIcon = Me.Icon.Handle
    .hwnd = Me.hwnd
    .szTip = "托盘消息演示" & vbNullChar
    .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
    .uCallbackMessage = WM_TRAYICON
    .uID = 0
    End With
   
    Shell_NotifyIcon NIM_ADD, lpTrayIconData


    pWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
End Sub


Private Sub Form_Unload(Cancel As Integer)
    Shell_NotifyIcon NIM_DELETE, lpTrayIconData


    SetWindowLong Me.hwnd, GWL_WNDPROC, pWndProc
End Sub


'模块代码:


Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long


Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2


Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
'download by http://www.codefans.net


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



Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


Public Const GWL_WNDPROC = (-4)


Public Const WM_USER = &H400
Public Const WM_TRAYICON = WM_USER + 123 '托盘消息


Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205


Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long


'===========================================


Public pWndProc As Long


Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = WM_TRAYICON Then
    Select Case lParam
    Case WM_RBUTTONDOWN
    SetForegroundWindow hwnd '关键的一步
    Case WM_RBUTTONUP
    Form1.PopupMenu Form1.Mnu_Menu
    End Select
    End If
   
    WndProc = CallWindowProc(pWndProc, hwnd, Msg, wParam, lParam)
End Function

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
往财付通里充钱这是什么意思?
问个问题可以帮忙
工厂没有任何执照,我也没签劳动合同,他现在
我家的电脑能不能玩使命召唤4啊
桂阳县郴州美佳士涂料哪位知道具体地址啊
什么软件杀毒效果好
poping练习舞曲节奏强的
没有希望在一起的爱情还值得去爱么?
农场中不同颜色的葫芦,都有什么用途?
正定技校有哪些专业?
我的炫舞团名叫Emp°☆灬苮家 拜托各位高手帮
炫舞外挂sx警告码 2,367,0 怎么解决
社会上的人能进入海事学院学习吗?
星光大道总冠军里有个叫浩东的没
漫画新网球王子几日更新一次
推荐资讯
真三国无双5貂貂婵怎么出?
photoshop处理水印
嘉源粉体有限公司在哪里啊,我有事要去这个地
please read _____ to let everyone to hear
G高达武斗传里面,土门问的那个男人是谁
事业 钱 父母 老婆 在你心中老婆排第几?
音乐播放的电纸书阅读器
怎样区分好与坏.
想带父母去医院做体检,哪些项目是有必要查的
不是落红能怀孕吗
诺基亚5300棘手问题
石井大冈村如何乘公交到唐阁村
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?