1、VB6如何使程序最小化时变成托盘
2、右键按托盘,弹出菜单,可选择显示或退出。
3、双击托盘可显示窗口。希望各位大哥门指教小弟,谢谢先~!

解决方案 »

  1.   

    调用API函数: Shell_NotifyIcon
    ''以下常量告诉系统在托盘中您的图标上发生了什么 操作 ''常量声明 Public Const WM_MOUSEMOVE = &H200 ''在图标上移动鼠标 
    Public Const WM_LBUTTONDOWN = &H201 ''鼠标左键按下 
    Public Const WM_LBUTTONUP = &H202 ''鼠标左键释放 
    Public Const WM_LBUTTONDBLCLK = &H203 ''双击鼠标左键 
    Public Const WM_RBUTTONDOWN = &H204 ''鼠标右键按下 
    Public Const WM_RBUTTONUP = &H205 ''鼠标右键释放 
    Public Const WM_RBUTTONDBLCLK = &H206 ''双击鼠标右键 
    Public Const WM_SETHOTKEY = &H32 ''响应您定义的热键 ''API函数声明 Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long ''自定义一个调用API Shell_NotifyIcon要用到的类 型"NOTIFYICONDATA" Public Type NOTIFYICONDATA cdSize As Long ''NOTIFYICONDATA类型的大小 hwnd As Long ''你的应用程序窗体的名柄 uId As Long ''应用程序图标资源的ID号 uFlags As Long ''使那些参数有效它是以下枚举类型中的 ''NIF_MESSAGE、NIF_ICON、NIF_TIP三组的组合 uCallbackMessage As Long ''鼠标移动时把此消息发给该图标的窗体 hIcon As Long ''图标名柄 szTip As String*64 ''当鼠标在图标上时显示的Tip文本 End Type ''这是一个枚举类型它告诉API Shell_NotifyIcon去做什么操作 Public Enum enm_NIM_Shell NIM_ADD=&H40 ''在“金碟”中加一图标 NIM_MODIFY=&H1 ''修改“金碟”中的图标 NIM_DELETE=&H2 ''删除“金碟”中的图标 NIF_MESSAGE=&H1 ''使类型"NOTIFYICONDATA"中的uCallbackMessage有效 NIF_ICON=&H2 ''使类型"NOTIFYICONDATA"中的hIcon有效 NIF_TIP=&H4 ''使类型"NOTIFYICONDATA"中的szTip有效 WM_MOUSEMOVE=&H200 ''使鼠标移动消息有效 End Enum ''定义一个"NOTIFYICONDATA"类型的变量 Public nidProgramData As NOTIFYICONDATA 以上是函数及常量声明和自定义的一个类型变量,下 面是此API函数的调用方法: 2. 在窗体上用菜单编辑一个具有如下信息的菜单项: 主菜单:无标题、名称(mainMenu) 子菜单:标题(API编程)、名称(submnul); 标题(退出)、名称(submnu2). 这里只是举个例子,具体的功能你可以根据你的具体需要来编辑此菜单项 3. 在窗体的Load事件中添加如下代码: Private Sub Form_Load() ''隐藏窗体 With Me .Top =-10000 .Left = -10000 .WindowState = vbMinimized End With ''设置类型NOTIFYICONDATA所具有的特征 With nidprogramData .cbSize = Len(nidProgramData) .hwnd = Me.hwnd .uld = vbNull .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE ''触发鼠标移动消息 .uCallbackMessage = WM_MOUSEMOVE .hIcon = Me.Icon ''“托盘”中放入窗体图标,你可以把窗体的图标换成你所喜欢的图标 .szTip ="VB 的 Win32 API 编程" & vbNullChar End With 
    ''调用该函数 Shell_NotifyIcon NIM_ADD,nidprogramData End Sub ''根据不同的鼠标消息做不同的操作 Private Sub Form_MouseMove(Button As inte ger, Shift As lnteger, x As Single, Y As Single) On Error GoTo Form_MouseMove_err: Dim Result As Long Dim msg As Long ''X的值依赖与显示模式的设置 If Me.ScaleMode = vbpixels Then msg = x Else msg = x/Screen.TwipsPerPixe1X End If Select Case msg Case WM_LBUTTONUP ''在这里加入鼠标左键释放时你想做的操作 Case WM_LBUTTONDBLCLK ''在这里加入双击鼠标左键时你想做的操作 Case WM_RBUTTONUP ''通常这里弹出你的功能菜单 PopupMenu mainMenu Case WM_MOUSEISMOVING ''在这里加入鼠标正在移动时你想做的操作 End Select Exit Sub 
    Form_MouseMove_err: ''在这里加入你的处理异常错误的代码 End Sub