当前位置:编程学习 > VB >>

VB利用API函数添加系统托盘图标的问题

网上看了一下教程,用的最多的方法就是通过:CallWindowProc、SetWindowLong、Shell_NotifyIcon等几个API函数实现。
其中关键一步是需要自己定义一个窗口过程。
在自己定义的窗口过程:
Public Function NewWindowProc(ByVal HWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
   '如果用户点击了托盘中的图标,则进行判断是点击了左键还是右键
   If Msg = TRAY_CALLBACK Then 
     '如果点击了左键 
     If lParam = WM_LBUTTONUP Then
       '而这时窗体的状态是最小化时 
       If TheForm.WindowState = vbMinimized Then _ 
        '恢复到最小化前的窗体状态 
          TheForm.WindowState = TheForm.LastState 
          TheForm.SetFocus
          Exit Function
       End If 
     End If 
     '如果点击了右键 
     If lParam = WM_RBUTTONUP Then 
       '则弹出右键菜单 
       TheForm.PopupMenu TheMenu 
       Exit Function 
     End If 
   End If 
   '如果是其他类型的消息则传递给原有默认的窗口函数
   NewWindowProc = CallWindowProc(OldWindowProc, HWnd, Msg, wParam, lParam) 
   End Function 


这段代码其他的都好理解,唯一不解的是:
NewWindowProc = CallWindowProc(OldWindowProc, HWnd, Msg, wParam, lParam) 
这个我知道是通过 CallWindowProc 来让原来的默认的窗口函数处理其它消息。
不解的是为什么 CallWindowProc的返回值一定要赋给自定义的窗口过程NewWindowProc呢?
我直接调用CallWindowProc,不赋值给NewWindowProc不行吗?(试了一下去掉赋值,直接调用,好像不行)
我想知道原因何在?CallWindowProc函数到底返回了什么东西,而且必须赋给NewWindowProc 你替换了原来函数,它返回是什么,你照样复制返回就行了,没必要关心那是什么内容。
补充:VB ,  API
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,