精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>● VB和Basic(1)>>API函数>>小技巧(1):关于Tray的处理

主题:小技巧(1):关于Tray的处理
发信人: fishy()
整理人: fishy(2000-03-12 14:43:13), 站内信件
现在使用Tray来编程已经不是什么稀奇事了,但是,不知道大家注意了没有,在
VB中使用Tray,会在Windows\Temp下生成一个临时文件。
不过,不用担心,只要你的程序是正常退出,这个临时文件就会被自动删除。
但是,如果你的程序是后台运行的,随着Windows的关闭而退出的,问题就来了—
—临时文件不会被删除!
So,怎么办?
其实,只要你的Tray是用API实现的(不是用的控件),只需要把原来的程序改一
下就可以了。
你的Tray程序中应该有这样一个函数(可能名字不同)来处理各种消息(比如在
Tray图标上单击鼠标右键):
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam
 As Long, ByVal lParam As Long) As Long
    If wParam = uID Then
        '处理Tray的消息
        Select Case lParam
            Case WM_RBUTTONDOWN
                'show pop-up menu
            Case .....
                .....
          End Select
      End If
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lPara
m)
End Function
你只需要从API察看器中Copy常量WM_QUERYENDSESSION的定义,然后把上面的函数
改称下面这样就可以了
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam
 As Long, ByVal lParam As Long) As Long
    Select Case uMsg
        Case Is = WM_QUERYENDSESSION
            '接受到Windows的关机消息
            '运行退出程序的语句
        Case Else
            If wParam = uID Then
                '处理Tray的消息
                Select Case lParam
                    Case WM_RBUTTONDOWN
                        'show pop-up menu
                    Case .....
                        .....
                  End Select
              End If
      End Select
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lPara
m)
End Function
编译后再看一看,讨厌的临时文件被自动删除了!

--
Dim fishy As Friend
回复时请打勾
------------
欢迎大家访问酷码工作室:http://comma.my163.net

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.37.14]

[关闭][返回]