VB6 如何弄出 CallBack 函数

bobogg 2010-03-21 03:19:55
请问 VB6 如何弄出 CallBack 函数 ( 不使用 Class 的 Event )








...全文
141 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobogg 2010-03-22
  • 打赏
  • 举报
回复
了解了
嗷嗷叫的老马 2010-03-21
  • 打赏
  • 举报
回复
CallWindowProc后面的四个参数其实就是PUSH给堆栈的参数,会被第一个指针里的函数取得.

所以只要你的参数在四个以内,直接用它吧.

不过呢,有个限制,就是只能传32位的值.

如果你要传字符串之类的,只能传入指针,再在函数里根据这个指针取得字符串了.麻烦是麻烦了点,自己决定值或不值吧.
bobogg 2010-03-21
  • 打赏
  • 举报
回复
老大 如果函数带有参数的话, 要如何呼叫

Function A(s as string) As Long
MsgBox s
End Function
bobogg 2010-03-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 myjian 的回复:]

丢函数地址给调用方,再用callwindowproc在需要的时候调用:

……
[/Quote]

老大谢谢你了
嗷嗷叫的老马 2010-03-21
  • 打赏
  • 举报
回复
丢函数地址给调用方,再用callwindowproc在需要的时候调用:

'窗体中
Option Explicit

Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcW" ( _
ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, _
ByVal msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Dim lFunAddr As Long '函数地址

Private Sub Command1_Click()
'需要时调用:
Call CallWindowProc(lFunAddr, 0, 0, 0, 0)
End Sub

Private Sub Form_Load()
lFunAddr = GetAddress(AddressOf A) '保存函数地址
End Sub

'标准模块中
Option Explicit

Function A() As Long
MsgBox "A"
End Function

Function GetAddress(ByVal Addr As Long) As Long
GetAddress = Addr
End Function

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧