dll中回调VB函数

aolin2000 2019-07-03 09:29:54
请教各位:
如何在dll库中实现VB的回调?
也就是:VB调用VC做的dll库,想在dll中回调VB函数,这个需要怎么做?

谢谢!
...全文
204 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在还是人类 2019-07-14
  • 打赏
  • 举报
回复
AddressOf 是取得VB函数的指针,可以通过这个传递函数指针给VC函数。 在VB中声明VC函数时,用 Any 类型声明函数指针变量。 在VC中需要先定义函数模型,然后在回调参数中用函数模型定义变量,如:

/* 回调函数模型定义 */
typedef void (*LPVBFUN)(void);
/* API函数定义 lpVBFunction 为VB回调函数*/
void _stdcall YourAPI(LPVBFUN lpVBFunction)
{
   lpVBFunction();
}

Private Declare Sub YourAPI Lib "YourAPI.dll" (lpVBFunction As Any)

Private Sub Form_Load()
    YourAPI AddressOf VBFunction
End Sub

Private Sub VBFunction()
    MsgBox "这是VB回调函数"
End Sub
sxqvb 2019-07-10
  • 打赏
  • 举报
回复
// a.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"

extern "C" void _declspec(dllexport) CallVBFunction(void);

//void CallFunc(void)
__declspec(naked) void CallVBFunction(void)
{
__asm
{
pop eax; //返回地址出栈
pop ecx; //函数指针出栈
push eax; //返回地址入栈
jmp ecx; //调用函数
}

}

7,763

社区成员

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

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