• 我们在使用VBA的时候会很多的局限性,包括调用库和递归函数,对指针结构体和类都不友好,对时间复杂度和空间复杂度都优化得不够,换言之VB就不是从性能出发的语言,所以难免力不从心

  • 所以这里用C++为VBA做DLL(动态链接库). 可能有的小伙伴就要问了,直接给CDR做动态链接库不是直接了当吗? 是的,直接给CDR做基于MFC的动态链接库是很好,但是纯C++很麻烦,费时间,要编译,要重启CDR,要找BUG, 而同样的功能VBA大部分可以实现,所以我只在核心的对性能有要求的只有C++才能方便实现的功能上使用C++. 简而言之就是VBA能容易做到就用VBA,复杂部分用C++. 这样结合是很合理很轻松的方式.有图有真相,先上图:

  • 使用半VBA半C++的方式有哪些优点呢?

  • 1构思节省时间

  • 2能做强大功能

  • 3避开全体编译

  • 4用VBA调用C++天经地义,两种并行各取所长

  • 5测试DLL过程中无需重启CDR --对使用CDR工作中的人非常友好,

  • 使用LoadLibrary动态调用DLL的方式比静态调用declare的方式更加灵活,内存在使用完DLL之后即对这个文件进行释放,方便随时升级更新动态链接库.这也是第5条得以实现的原因.

当然毫无基础的同学也同样可以照做,因为只要你代码写对了就可以实现,不需要全部理解,好了废话不多说了,下面开始准备工作:

  1. 首先需要一个C++工作环境,也就IDE集成开发环境,各有所好,推荐使用VS2019社区版,英文全称Microsoft Visual Studio Community 2019.社区版是免费的只要登陆就可以正常使用,不要下载专业版要收费的哦,记得安装完成之后安装组件就对照我下面的图片即可 具体过程实在不熟悉的朋友可以去百度一下专门介绍安装问题的.
  • 后面这张单个组件中的v142是如果你要用纯C++开发插件必装的组件,你可装可不装,为了避免出现问题就装一下吧, Help Viewer是开发者手册,里面的手册能装尽量全部装了,这样有问题一搜比较好找问题.
  • 好了你只要把这个装好了就可以进入下一步了

为了避免平台限流我还是把刚才GIF里面的代码上一下,以下代码可以不用看

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "User32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As LongPublic Sub Command1_Click()On Error Resume NextDim lb As Long, pa As Longlb = LoadLibrary("c:\cine\CongLingKaiShi_YinYong.dll") '加载动态连接库pa = GetProcAddress(lb, "WoDeDll")  '取得库中的函数地址pa = CallWindowProc(pa, ByVal VarPtr(CorelDRAW.Application), ByVal CorelDRAW.Windows.Item(1).Handle, ByVal 0&, ByVal 0&)   '调用函数并传入四个参数FreeLibrary lb  '释放End Sub

CorelDRAWX4的VBA插件开发(二十七)使用C++制作动态连接库DLL辅助VBA构键强大功能-(1)前言和准备工作相关推荐

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

    我们先来看一下动态调用的截图 先上代码 '静态调用 Public Declare Function wodedll Lib "E:\VS-DLL\conglingkaishi\Debug\C ...

  2. CorelDRAWX4的VBA插件开发(二十四)复合选框组件与联合命名面板

    我们在处理文档的时候碰上的最多的问题就是与字符串相当的问题,这里再拿出来单把各种使用命名的小组件讲一下,我们先上效果图: 我们可以在上图看到最终结果,可以让一行文件名跟随各种组件进行更改,下下面我们先 ...

  3. CorelDRAWX4的VBA插件开发(二十三)INI初始化文件的读写和路径的保存

    我们在上一节当中写了一个选择路径的功能, 所以我们希望这个路径在每一次打开的时候都会重新显示出上次选择的, 这就需要借用到外部文件来储存了, 要把这个内容写在硬盘上, 这种文件一般就是所谓的后缀为.i ...

  4. CorelDRAWX4的VBA插件开发(二十五)多类目选择实现复合框内容置换

    有时候我们的复合框内的内容是有更多的需求,但是我们又不想另开一个窗口,怎么办呢,我们直接使用复合框内容替换就行啦 先上效果图: 先在面第板上拉出一个框架, 再在里面添加上三个选项按钮, 添加好之后这三 ...

  5. Revit二次实现多版本动态引用RevitAPI.dll、RevitAPIUI.dll、AdWindows.dll、UIFramework.dll

    1.使用NuGet添加:Revit_All_Main_Versions_API_x64(动态引用) 2.修改工程文件配置:.csproj 复制如下的配置项 <PropertyGroup Cond ...

  6. CorelDRAWX4的VBA插件开发(四) 用一个例子了解CORELDRAW-X4的四个基本对象

    CorelDRAWX4的VBA插件开发(四) 用一个例子了解CORELDRAW-X4的四个基本对象 1.打开第一章的界面如下图: 2.把之前的代码稍作修改 Sub 第一个插件()Dim zongShu ...

  7. 2021年大数据Hadoop(二十七):YARN运行流程

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn运行流程 本系列历史文章 2021年大数据Hado ...

  8. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  9. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十七:TFT模块 - 显示

    实验二十七:TFT模块 - 显示 所谓TFT(Thin Film Transistor)就是众多LCD当中,其中一种支持颜色的LCD,相较古老的点阵LCD(12864笑),它可谓高级了.黑金的TFT ...

最新文章

  1. jQuery的文档操作方法
  2. 第十七届全国大学生智能车竞赛智能视觉组培训第一弹
  3. Android开发--详解SAX解析XML文件
  4. UA MATH566 统计理论7 一个例子:推导T检验
  5. Android程序签名打包 什么是签名,有什么用:
  6. 计算机专业推荐表自我介绍,就业推荐表-自我介绍
  7. Microsoft SQL Server Version List 版本列表
  8. ffplay源码(版本:ffmpeg-4.2.1)
  9. thinkphp 3 升到 thinkphp 5 或更高 ( 资料收集)
  10. 安卓操作系统版本(Version)与应用程序编程接口等级(Application Programming Interface Level)对照表...
  11. Java进行spark计算
  12. WebFlux系列(十)WebClient 异常处理
  13. 华为 博士 实习_华科女博士年薪156入职华为!最新回应:在深圳也难买房…
  14. 在Sohu的最后一个作品-2011版大视野
  15. 方舟修改服务器代码,方舟生存进化服务器可以用代码吗
  16. RC串联延时电路电容充电时间计算
  17. VMware安装苹果虚拟机-亲测有效
  18. C语言如何生成随机数
  19. 装了V2.6.41,C4D启动卡死在初始化插件页面,装了RS后C4D无法启动,C4D用什么版本的RS?
  20. ppd文件下载 linux,Linux系统R230,R270,R330,L380打印机驱动下载爱普生喷墨打印机PPD文件...

热门文章

  1. 2018上海交大计算机学院,2018年上海交大毕业生,都去哪里了?看这张图就知道![图]...
  2. 公众号怎么关联小程序?
  3. SQL学习----添加列到指定位置
  4. 妖精的尾巴等待服务器响应,妖精的尾巴手游排队掉线、服务器断开、登录失败问题解决方法[多图]...
  5. 亚马逊短视频制作需要注意什么?
  6. 虚拟现实在文物古迹方面的应用
  7. 西安交通大学计算机科学与技术学科评估,计算机系2016年度总结暨学科评估及学科建设研讨会召开...
  8. MindManager 2018有趣的HTML5互动演示
  9. 使用POI对word文档进行取读
  10. ios使用stream抓包