我是个新手,我在试做托盘。代码如下:With TheData
        .Uid = 0
        .HWnd = MDIForm1.HWnd              'mdiform1.HWnd是程序主窗体的句柄
        .cbSize = Len(TheData)
        .HIcon = MDIForm1.Icon.Handle       'mdiform1.Icon.Handle指向主窗体
的图标
        .UFlags = NIF_ICON
        .UCallbackMessage = TRAY_CALLBACK
        .UFlags = .UFlags Or NIF_MESSAGE
        .cbSize = Len(TheData)
        .SzTip = "信息管理系统"
      End With
Shell_NotifyIcon NIM_ADD, TheData不知为什么在系统托盘区只产生一个空白位置不见有图标,不知我那里写错了?
mdiform1是有Icon的。

解决方案 »

  1.   

    '添加图标到系统托盘
    Public Sub AddToTray(frm As Form, mnu As Menu)
        '任务条在设计时需设为False,因为运行时是只读的    '使用之后保存窗口和菜单
        Set TheForm = frm
        Set TheMenu = mnu
        
        '安装新的窗口进程
        OldWindowProc = SetWindowLong(frm.hWnd, _
            GWL_WNDPROC, AddressOf NewWindowProc)
        
        ' 在人物条上显示窗口的默认图标
        With TheData
            .uID = 0
            .hWnd = frm.hWnd
            .cbSize = Len(TheData)
            .hIcon = frm.Icon.handle
            .uFlags = NIF_ICON
            .uCallbackMessage = TRAY_CALLBACK
            .uFlags = .uFlags Or NIF_MESSAGE
            .cbSize = Len(TheData)
        End With
        Shell_NotifyIcon NIM_ADD, TheData
    End Sub' 移除托盘图标
    Public Sub RemoveFromTray()
        On Error Resume Next
        With TheData
            .uFlags = 0
        End With
        Shell_NotifyIcon NIM_DELETE, TheData
        
        ' 恢复原始窗口进程
        SetWindowLong TheForm.hWnd, GWL_WNDPROC, OldWindowProc
    End Sub' 设置图标提示
    Public Sub SetTrayTip(tip As String)
        With TheData
            .szTip = tip & vbNullChar
            .uFlags = NIF_TIP
        End With
        Shell_NotifyIcon NIM_MODIFY, TheData
    End Sub' 设置托盘图标
    Public Sub SetTrayIcon(pic As Picture)
        '系统闲时检测是否为图标
        If pic.Type <> vbPicTypeIcon Then Exit Sub    ' 更新托盘图标
        With TheData
            .hIcon = pic.handle
            .uFlags = NIF_ICON
        End With
        Shell_NotifyIcon NIM_MODIFY, TheData
    End Sub
      

  2.   

    可以了,原来我忘记定义NIF_ICON等常量