-
先上结果图,这个工具栏和按钮都是主程序自动生成的
-
在程序的运行当中,如果我们希望程序能够自己创建工具栏和按钮,可以在CDR启动事件中设置一个检测功能
Private Sub GlobalMacroStorage_Start()
Dim creatTool As Boolean: creatTool = True
For Each Item In CorelDRAW.CommandBars
If Item.Name = "theTestTool" Then
creatTool = False
End If
Next
If creatTool Then
CorelDRAW.AddPluginCommand "GlobalMacros.A.theBtr", "theBtr", "theBtr"
CorelDRAW.CommandBars.Add "theTestTool"
With CorelDRAW.CommandBars.Item("theTestTool")
.Visible = True
.Controls.AddCustomButton cdrCmdCategoryMacros, "GlobalMacros.A.theBtr"
End With
End If
End Sub
Sub theBtr()
MsgBox "测试成功"
End Sub
-
我们可以看到上图中在
GlobalMacroStorage
中,可以在右侧的下拉列表当中看到非常多的响应事件,我们选取
start
就是在CDR主程序在启动完毕的时候会执行所有
GlobalMacroStorage_Start
函数,这个函数名是固定的,不能随便更改函数名,更改了就不会正常运行,这个函数会在启动之后运行一次,如果其它的GMS里面的主页面里也有这个函数,那么主程序也会去执行这个函数,所以这个函数在写完后要重启CDR才会生效 -
这个自动生产的函数是
Private
的,也就是说这个函数默认就是私有的. -
首先使用遍历
for each
功能浏览一遍所有的工具栏的名称,如果没有我们这个工具栏同名则进行新建,工具栏取名
theTestTool
-
那我们讲一下这里头最关键的地方就是
AddPluginCommand
这个函数了,这个函数有三个参数,一旦被建立之后就是无法修改的,所以我们必须要在这个时候就把这个三个参数确立好,
头一个参数
就是这个按钮的主调函数名称,这个名称如果填错了,那么我们按下了按钮程序是没有任何反应的,可以看到我填的是
GlobalMacros.A.theBtr
,为什么是这样子的名称呢,因为这个就是我们需要调用的函数的全路径,
GlobalMacros
来自于下图中的左上角文件的
名称
,这个是可以自己修改的,你改的是什么,这里就要相应地修改成什么
-
而
A
则来自于页面名称如下图
-
最后一个名称则是定位到具体的函数,所以这个名称
GlobalMacros.A.theBtr
的由来如下图所示
-
这样子就叫作函数绑定,那么两个这个函数绑定好了,那么程序还有重要的一步要做,那就是必须把这个按钮的模式设置成
macros
模式,与之相对应的则是
plugin
模式,这两种模式是有一定区别的,macros是VBA的宏模式,plugin模式则是自定义的模式,可以自己定义很多功能,并且会占用一些计算资源,我们这里用的就是VBA,那么就尽量用原本的macros模式, 因为这本来就是为VBA设计的 -
所以在后面添加这个按钮的时候我们使用
AddCustomButton
函数,第一个参数就是使用macros模式 cdrCmdCategoryMacros 后面接上按钮的commandID也就是函数路径 -
这些全都做好之后,我们可以开始写被调函数
Sub theBtr()
了,我们随便在里面写一个弹窗,写完后我们重启CDR,可以看到效果,我们成功了
-
附带说一下
Visible = True
就是让这个工具栏不要隐藏
版权声明:本文为weixin_43716462原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。