您的批评和鼓励都是我把编程无限办好的动力! 您编程时遇到困难,或遇到不顺心的事想发发牢骚尽管到这里来吧! 虽然本网力求全面,但也不能包罗万象,这些我筛选出的优秀网站连接就是对本站最好的补充! 学习编程当然也离不开书本了,这里收集大量编程书籍! 编程无限之源码超市,这里收集的代码令你意想不到的全面! 欢迎光临编程网校,这里专门收集VB/CB入门文章及技术文章! 欢迎光临编程无限!
     
       
 
当前位置:中文资料 >> 系统API
把图标放在WIN95的系统托盘中
  资料类型: 系统API 上传时间: 2001-02-21 阅读次数: 785



把图标放在WIN95的系统托盘中



在系统托盘中的图标又被称作“提示图标”(NotifyIcon)。这个小小的图标不仅可以启动程序,还可用来显示程序运行的状态。

一个 hWnd被用来接收鼠标在提示图标上时所产生的事件所发出的消息。但如果用此方法,可能会触发其它控件的MouseMove 事件。在本例中,使用一个PictureBox来接收来自鼠标的消息。真正的事件被包含在MouseMove事件中的X参数中,然后通过代码来I 提取每一个事件。

同时你还必须指定要显示图标的句柄。使用PictureBox的DragIcon属性可以轻松地实现。

为了产生一个提示图标,你必须首先将图标的有关信息储存在一个自定义类型变量中。然后调用Shell_NotifyA。当创建了一个提示图标 后所有的鼠标事件将触发在PictureBox上的MouseMove事件。请注意在程序结束后删除提示图标。

首先在你的窗体上放置一个PictureBox。本例假设该控件名为Picture1。将其Visible属性设为False。将其DragIcon属性设定为你想要显示的To 图标文件。使用下面的代码在Form_Load事件中创建提示图标。在Form_Unload事件中删除提示图标。

把下面的代码放在一模块的声明段中。

DefInt A-Z

Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

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

' commands & flags for NotifyIcons
Global Const NIM_ADD = &H0&
Global Const NIM_MODIFY = &H1
Global Const NIM_DELETE = &H2
Global Const NIF_MESSAGE = &H1
Global Const NIF_ICON = &H2
Global Const NIF_TIP = &H4
Global Const WM_MOUSEMOVE = &H200
Global NI as NOTIFYICONDATA

创建提示图标

将下面的代码放在Form_Load事件中以产生一个提示图标。所有的鼠标事件都将会传递到PictureBox的MouseMove事件中。

' stock NOTIFYICONDATA structure
NI.cbSize = Len(NI) 'length of this structure
NI.hWnd =Picture1.hwnd 'control to receive messages
NI.uID = 0 ' uniqueID
NI.uFlags = NIF_MESSAGE or NIF_ICON or NIF_TIP ' Operation Flags
NI.uCallbackMessage = WM_MOUSEMOVE ' message to send to control
NI.hIcon = Picture1.DragIcon ' handle to Icon
NI.szTip = "My Tool Tip" + Chr$(0) ' Tool Tip

' 必须给提示图标分配一个唯一的ID号
' so increment until creation is successful

Do
NI.uID = NI.uID + 1
result = Shell_NotifyIconA(NIM_ADD, NI)
Loop While result = 0

修改提示图标Modifying NOTIFYICON

下面的例子可以修改图标

NI.hIcon = Picture2.DragIcon
NI.szTip = "Different Tool Tip" + Chr$(0)
' modifies an existing NotifyIcon
result = Shell_NotifyIconA(NIM_MODIFY, NI)

删除提示图标Deleting NOTIFYICON

将下面的代码放在Form_Unload事件中

' 删除已有的提示图标
result = Shell_NotifyIconA(NIM_DELETE, NI)

下面的代码放在 PictureBox的MouseMove事件中

' 从提示图标接收消息
' 消息通过X参数传递

Dim Msg as Long


Msg = (X And &HFF) * &H100
Select Case Msg

Case 0 ' 鼠标移动
' 在此输入你的代码

Case &HF00 ' 鼠标左键被按下
' 在此输入你的代码

Case &H1E00 '
' 在此输入你的代码

Case &H2D00 ' 双击鼠标左键
' 在此输入你的代码

Case &H3C00 ' 鼠标右键被按下
' 在此输入你的代码

Case &H4B00 ' 鼠标右键弹起
' 在此输入你的代码

Case &H5A00 ' 双击鼠标右键
' 在此输入你的代码

End Select


推荐给朋友 点 评( 0 ) 返回前页 关闭此页
   
  本类最热文章排名:
  1.在VB中使用API函数 (之一)
2.怎样用VB在应用程序中调用API
3.在VB中使用API函数 (之二)
4.在VB中使用API函数 (之三)
5.指定文件夹
6.在VB中使用API函数 (之五)
7.在VB中使用API函数 (之四)
8.在VB中用API实现多媒体
9.如何提高调用WINDOWS API函数编程技巧
10.在VB中控制Ctrl+Del+Alt键
   
   
  评论:
 
 
 

 

关于本站 版权声明 联系方法
编程无限 V4.1 Copyright © 1999-2009 21code.com

京ICP备05006938号