CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮

  • Post author:
  • Post category:其他


  • 先上结果图,这个工具栏和按钮都是主程序自动生成的

    在这里插入图片描述

  • 在程序的运行当中,如果我们希望程序能够自己创建工具栏和按钮,可以在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 版权协议,转载请附上原文出处链接和本声明。