CorelDRAWX4的VBA插件开发(三十)使用C++制作动态连接库DLL辅助VBA构键强大功能-(4)在VBA中静态调用写好的DLL文件

  • 上一节中我们生成了标准的DLL文件,那么就到了最关键的时候了,我们接下来回到VBA中,开始我们的静态调用吧
  • 我们先添加一个模块
    在这里插入图片描述
'静态调用
Public Declare Function wodedll Lib "E:\VS-DLL\conglingkaishi\Debug\CongLingKaiShi.dll" Alias "WoDeDll" (ByVal Application As Application, ByVal hwnd As Long) As Integer
  • 这是声明,Public 是可供模块之外访问的意思,是共开的

  • 然后Declare Function 或者是sub这个是固定用法,Function 后面接我们的功能函数的名称,这里写上wodedll

  • 名称后面接Lib 是固定用法,不管是加载的lib还是dll都是这个,然后后面再接需要被声明的库文件"E:\VS-DLL\conglingkaishi\Debug\CongLingKaiShi.dll"这个就是我们上一节上制作好的dll文件.

  • Alias 是在里面查找功能函数, "WoDeDll"这个就是我们在C++程序中命名的函数名

  • ByVal Application As Application这里是传第一个参数,是一个Application类,实际上它里也就是一个地址指针,指向这个类

  • ByVal hwnd As Long这是第二个参数,传的是一个窗口句柄,它实际上也就是一个长整数,所以用的long

  • 为什么要传这两个参数呢,因为我们的DLL只要有了这两个参数,或者说只要有了第一个参数就能对我们的CDR程序进行操作,因为CDR所有的子类基本都可以通过这个Application基类进行访问.它甚至可以说不是继承关系,而是封装的关系.里面的类一层一层封装在Application中.

  • 好了,我们进入到A文件中进行调用
    在这里插入图片描述

Sub 第一个插件()
    vbaToDll.wodedll CorelDRAW.Application, CorelDRAW.Windows.Item(1).Handle
End Sub
  • 好了,我们看一下最终效果如何
    在这里插入图片描述
  • 成功了
  • 刚才传的两个参数,一个是CorelDRAW.Application,
  • 另一个是CorelDRAW.Windows.Item(1).Handle这个就是主窗口的句柄值.用来模态弹窗用的
  • 好了,调用成功,但是为什么说静态调用不好呢,我们这个时候可以回到CongLingKaiShi.dll这个文件看一下,当我们直接移动或者删除或者覆盖的时候会提示错误
    在这里插入图片描述
    这也就是为什么我要选择用动态调用的原因,下一节讲动态调用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值