近来接到这样一个需求,在他们已经开发好的用vb写的CorelDraw插件基础上,需要一个打开CorelDraw软件时自动运行他们用vb写的宏,因为正常是需要进入软件后,点开工具-宏-运行宏,要经过这样的步骤才能运行编译,但是用户可不想这样,所以需求就是需要我用c++写一个cpg的插件来做这件事。
对于一个ios开发人员来说,听着确实懵逼了,于是我开始调研,找到了上一篇文章,对这个插件有了初步了解。虽然我学过点c++,但都是几年前了。硬着头皮我在mac笔记本上装了windows虚拟机和vs2010还有coreldrawX7,然后开始研究,网上的例子太少且是多年前的,运行环境和引用的文件都是旧的,点击运行报了很多错,我试图一个个去解决,最终我发现我根本看不懂,解决之后可能改变了本意,于是我换个思路,从零开始创建,不需要写入什么功能只想能成功运行导出cpg文件,这步我成功了。下一篇会介绍。然而这个项目马上要上线了我还没有用c++实现这个需求,但是在研究的过程中我发现了另一种解决办法,不过不是用c++写的插件,写这个文章的目的也是希望有更多人来一起研究c++写的coreldraw插件,互相分享,希望有大神指点一二。
下面来说说我的实现办法:
在coreldraw中有个全局的宏文件GlobalMacros,这里我点击编辑GlobalMacroStorage这个宏,发现他有一些自带的类似生命周期的方法,如GlobalMacroStorage_DocumentNew、GlobalMacroStorage_DocumentOpen、GlobalMacroStorage_Start等等,这里我就利用这个start即打开软件时就会触发的这个方法,在这个方法里我去调用我们写好的工具。
最终运行效果:

这是我在start方法加的一句弹出打印。

这是在start里取调用我们写好的宏工具,调用成功。不过,在不同版本上这招不一定都可以,x7以上还是可以的,这个也有待研究。

上面这是我用的代码,在GlobalMacroStorage_Start里我调用我们另一个写好的宏文件。
GMSManager.RunMacro "bsxmtool", "ThisMacroStorage.main"这句。一共两个参数,一个宏名,一个对应开始执行的方法即main方法。
网友评论