CDR插件开发之CPG插件(C++)
文章平均质量分 91
面向新手,从零到一,基于 Visual Studio 2019 开发工具 和 C++语言,图文并茂详细讲解CDR插件之CPG插件开发技术,让你掌握CPG插件的相关知识,并能够编写自己的CPG插件。
CDR超平面云插件
超平面云插件,集超多功能于一体的轻量化CDR工具箱,支持自由组合与云端同步。用户可按需付费选购功能模块,个性化编辑功能分组,无需为冗余功能支付费用。该插件采用云端架构,实现多设备间无缝同步,无需本地安装即可使用各项功能。即使更换电脑或重装系统/CDR软件后,数据依旧安全无损,一键闪电更新所有功能,无需重新下载安装,带给您便捷高效的使用体验。
展开
-
CDR插件开发之CPG插件018 - 在CPG插件中调用外部EXE程序并传递参数
在上篇文章中,讲解了CPG插件在VS2019中实现调试的具体方法。本文以具体代码为例,讲解在CPG插件中调用外部EXE程序,并传递运行参数的方法。工程搭建准备按照惯例,本篇文章的序号为018,请直接拷贝上一个工程017-cpg-debug(拷贝前最好清理掉 Debug、x64等编译目录,因为这些文件夹不需要保留,新的工程在编译时会自动生成),然后将其重命名为018-cpg-call-exe,如下图所示:拷贝后,打开018-cpg-call-exe,将解决方案的名称改名为:0...原创 2021-07-19 21:24:40 · 1081 阅读 · 0 评论 -
CDR插件开发之CPG插件017 - 在VS2019中实现CPG插件调试(自动写入CPG、自动启动CDR)
在上篇文章中,讲解了图像导出实例:当文档打开后,自动导出当前页面的图像到系统临时文件夹。在代码编写过程中,导出图像路径变量tmpFileName 被修改了很多次,有没有办法实现调试功能,通过控制台打印变量,而不用编译成CPG后再通过消息框来调试?当然是可以的。本篇作为单独篇,以CDR X8版本为例,讲解CPG插件在VS2019中实现调试的具体方法。工程搭建准备按照惯例,本篇文章的序号为017,请直接拷贝上一个工程016-export-image(拷贝前最好清理掉 Debug、x64等编译目录..原创 2021-07-18 15:36:40 · 1177 阅读 · 0 评论 -
CDR插件开发之CPG插件016 -【实例】在CPG插件中动态导出图像到临时文件夹
在上篇文章中,讲解了文档事件在CPG插件中的开发方式和使用例子。本文在文档事件的基础上,编写一个实用的例子:当文档打开后,自动导出当前页面的图像到系统临时文件夹下面的子文件夹中,子文件夹按照日期动态创建。工程搭建准备按照惯例,本篇文章的序号为016,请直接拷贝上一个工程015-document-event(拷贝前最好清理掉 Debug、x64等编译目录,因为这些文件夹不需要保留,新的工程在编译时会自动生成),然后将其重命名为016-export-image,如下图所示:拷贝后,打开...原创 2021-06-16 07:49:23 · 806 阅读 · 2 评论 -
CDR插件开发之CPG插件015 - 在CPG插件中实现文档事件监听(基于 cgs-plugin-sdk 高级接口)
在上篇文章中,讲解了通过新建MFC类演示了简单的文本框读写操作,实现了读取和写入MFC窗体界面中的文本框内容。更多窗体控件的读写操作讲解,可能在后续文章中发布。本篇作为单独篇,讲解文档事件在CPG插件中的开发方式和使用例子。本文不按照 STEP BY STEP 的方式来细分讲解,重点关注cgs-plugin-sdk 插件工具包的能力。CDR插件开发工具包简介(cgs-plugin-sdk)CDR插件开发工具包的官方地址:https://www.oberonplace.com/cgs-pl..原创 2021-06-13 20:22:27 · 815 阅读 · 0 评论 -
CDR插件开发之CPG插件014 - 在CPG插件中实现窗体界面文本框读写交互
在上篇文章中,讲解MFC组件的安装相关步骤,其目的是为后续文章做铺垫,因为要操作复杂的窗体界面组件,必须要MFC组件的支持。本文开始演示简单的文本框读写操作,实现读取和写入MFC窗体界面中的文本框内容。原创 2021-06-03 17:05:05 · 826 阅读 · 0 评论 -
CDR插件开发之CPG插件013 - 在VS2019中安装MFC窗体界面组件
在前两篇文章中,实现了一个简单的CPG小插件(CDR小助手):点击工具栏按钮时,弹出该窗体对话框,在窗体对话框中单击“新建文档”按钮时,创建一个新的CDR文档;单击“一键转曲”按钮时,将当前选定的对象转换成曲线。在实际开发过程中,往往需要用到更加复杂的界面组件,本文将介绍MFC环境的安装。什么是MFCMFC是英文Microsoft Foundation Classes 的简称,含义为微软基础类库。既然是类库,那么自然会包含许多的类,MFC将Windows应用程序接口封装起来,提供了一套包含界面.原创 2021-05-23 22:56:33 · 986 阅读 · 2 评论 -
CDR插件开发之CPG插件012 - 在CPG插件中实现对话框窗体按钮交互(下篇)
在上篇文章中,创建了一个带有两个按钮的窗体对话框,但仅仅是界面设计,还不能显示和响应用户的点击。本文将实现:点击工具栏按钮时,弹出该窗体对话框,在窗体对话框中单击“新建文档”按钮时,创建一个新的CDR文档;单击“一键转曲”按钮时,将当前选定的对象转换成曲线。工程搭建准备按照惯例,本篇文章的序号为012,请直接拷贝上一个工程011-form-dialog(拷贝前最好清理掉 Debug、x64等编译目录,因为这些文件夹不需要保留,新的工程在编译时会自动生成),然后将其重命名为012-form-d..原创 2021-05-08 23:14:06 · 662 阅读 · 4 评论 -
CDR插件开发之CPG插件011 - 在CPG插件中实现对话框窗体按钮交互(上篇)
在前两篇文章中,通过创建工具栏按钮,并为工具栏上的按钮绑定事件,实现了一个极简版本的一键制作条幅功能。本篇文章将开始探讨另外一种和CDR交互的方式,即通过窗体对话框来交互。本文(上下两篇)将实现:点击工具栏按钮,弹出一个带有标题的窗体对话框,窗体对话框中有两个按钮,标题分别是“新建文档”和“一键转曲”,一个用来创建CDR文档,一个用来将当前选定的对象转换成曲线。工程搭建准备按照惯例,本篇文章的序号为011,请直接拷贝上一个工程 010-create-tool-icon(拷贝前最好清理掉 Debu原创 2021-04-29 21:40:50 · 614 阅读 · 2 评论 -
CDR插件开发之CPG插件010 - 在CPG插件中实现创建工具栏按钮(下篇,基于X4)
在上篇文章中,通过代码在标准工具栏上创建了一个自定义图标,但读者会发现这个图标是禁用状态,无法点击。本文将继续完善之前的代码,实现工具栏按钮的启用、动态启用,并为按钮添加单击响应事件,单击后,在当前页面创建一个矩形框,矩形框内创建美术字文本,最后将文本和矩形框居中对齐,也就是一个极简版本的一键制作条幅功能。工程搭建准备按照惯例,本篇文章的序号为010,请直接拷贝上一个工程 009-create-tool-icon(拷贝前最好清理掉 Debug、x64等编译目录,因为这些文件夹不需要保留,新的原创 2021-04-26 22:58:08 · 1105 阅读 · 2 评论 -
CDR插件开发之CPG插件009 - 在CPG插件中实现创建工具栏按钮(上篇)
在之前的3篇文章中,已经实现了一个标准的HelloWorldPlugin自定义CPG插件,可以做到在CDR启动、会话开始和关闭、CDR卸载时执行自定义功能的能力,但这是远远不够的,因为在CDR中使用插件的方式,通常就是点击一个按钮,要么直接执行功能,要么弹出插件的窗体界面,根据用户的选择和输入来执行操作。本文通过源码实战演示,如何在CPG插件中,创建一个带有图标的自定义工具栏按钮,并实现点击工具栏按钮时,在当前页面创建一个矩形框,矩形框内创建美术字文本,最后将文本和矩形框居中对齐。工程搭建准..原创 2021-04-11 07:00:49 · 1831 阅读 · 4 评论 -
CDR插件开发之CPG插件008 - 怎么实现一个CPG插件类(下篇)
上篇文章中,通过将自定义的的HelloWorldPlugin类继承自VGCore 命名空间中的IVGAppPlugin,并简单介绍了IDispatch 接口中定义的四个基本方法(OnLoad、StartSession、StopSession、OnUnload),然后演示了如何给工程配置库目录,实现了在输入CDR库相关代码时的自动提示(VGCore开头的)。本文将通过实现IVGAppPlugin 类中的纯虚函数,实现插件和CDR应用结合起来,在C++代码中得到CDR应用对应的实例对象,让插件能...原创 2021-04-06 23:32:23 · 696 阅读 · 3 评论 -
CDR插件开发之CPG插件007 - 怎么实现一个CPG插件类(中篇)
上篇文章中,通过创建了一个带有构造函数的最简单的C++类 ——HelloWorldPlugin,并在CDR调用 AttachPlugin 方法的时候,通过 new 关键字创建了这个插件类。插件在CDR中成功响应,弹出了消息框:欢迎使用我的 HelloWorld CPG插件。同时,通过AttachPlugin函数的第一个参数(VGCore::IVGAppPlugin),引申出了IVGAppPlugin 这个定义在 vgcoreauto.tlh 中的类。原创 2021-04-02 23:04:28 · 1854 阅读 · 3 评论 -
CDR插件开发之CPG插件006 - 怎么实现一个CPG插件类(上篇)
上篇文章讲到通过暴露 AttachPlugin 函数,使得编译后的CPG插件可以被CDR成功调用,弹出了消息框。然而这个CPG插件,还没有获得CDR提供的编程能力,因为它只有一行实现代码。即便如此,这个CPG已经是真正意义上的CPG插件了,只不过功能很简单而已。本篇文章继续探讨如何去编写自己的插件类,并让CDR在启动的时候调用该类中代码。工程搭建准备按照惯例,本篇文章的序号为006,请直接拷贝上一个工程 005-cdr-attach-plugin(拷贝前最好清理掉 Debug、x64等编译目录,原创 2021-03-28 10:20:12 · 890 阅读 · 2 评论 -
CDR插件开发之CPG插件005 - 暴露AttachPlugin方法实现CDR启动时加载插件
在上篇文章里,博主讲到了查看CDR类型库ID的办法,通过 libid 引入了CDR类型库并修改了项目生成配置中的目标文件扩展名,成功编译得到了一个cpg文件。注意,对于这个cpg文件,我的称呼是cpg文件,而不是cpg插件,因为它并不能在CDR中使用(运行)。在本篇文章里,博主会开始进入CDR加载CPG插件的核心技术环节,在之前项目的基础上做一些小的改进,添加很少的几行代码,就可以让cpg文件变成一个能在CDR中运行起来的“伪插件”。你会得到一点成就感,因为你编写的CPG终于能和CDR软件关联起来,你会原创 2021-03-27 23:28:58 · 936 阅读 · 3 评论 -
CDR插件开发之CPG插件004 - 认识VGCore并编译生成你的第一个CPG文件
上篇文章中,讲到了使用VS2019编译CDR类型库 VGCoreAuto.tlb,编译后得到了vgcoreauto.tlh和vgcoreauto.tli两个文件。本文将对这两个文件说明,并演示通过标准的libid形式来导入CDR类型库,在这个过程中,穿插一些VS2019的使用技巧(删除目录、复制工程、打开项目或解决方案、修改解决方案名称、修改项目名称等),使读者循序渐进,逐步提高对VS2019工具的熟练程度,最后通过修改项目属性配置,生成第一个CPG文件。原创 2021-03-23 22:55:41 · 2109 阅读 · 6 评论 -
CDR插件开发之CPG插件003 - 使用VS2019编译CDR类型库 VGCoreAuto.tlb
在上篇文章中讲到了CPG插件环境的搭建,实际上主要是使用VS2019这个集成开发环境。由于要使用C++语言环境,因此在安装VS2019的过程中勾选了C++桌面开发环境。CDR软件环境请自行安装X4、X8或其他高版本的64位CDR,因为X4是32位,在接下来的CPG编译过程中,会演示不同版本的编译。CDR软件安装简单,本文将直接跳过,请读者自行安装。在后面的文章中,将默认读者本机已安装了CDR X4和X8版本。好了,现在开发环境有了,从本文正式踏上CPG探索之路。什么是TLB类型库在编写代码之前,TL原创 2021-03-21 10:51:31 · 2139 阅读 · 5 评论 -
CDR插件开发之CPG插件002 - CPG插件开发环境准备和搭建
上篇文章对什么是CPG插件做了简单的介绍,读者只需要心中有个概念即可。那么,本篇文章就直接开始动手,正式踏上CPG插件开发之路的必经步骤:开发环境搭建。CPG插件不像GMS插件那样,可以在CDR自带的宏编辑器中直接运行和调试,必须在外部编程工具中一次写好,编译成CPG后再来运行测试(或许有办法断点调试,但可能会比较复杂,因此这里不做过多探讨)。原创 2021-03-18 23:43:17 · 2120 阅读 · 6 评论 -
CDR插件开发之CPG插件001 - 什么是CPG插件
CPG,英文缩写 Corel Plugin,中文含义是 Corel 插件,简称CPG插件,典型代表有魔镜。CDR是鼎鼎大名的创意图形设计软件,几乎是广告、印刷行业的标准,而正是由于CDR在日常的排版、设计和制作过程中,经常会遇到大批量图形处理,比如条幅、名片、拼版、文字连襟等等,这种工作如果由人工操作,不仅耗时,还容易出错,效率不高。为了解决这些问题,CDR软件提供了插件机制,CPG插件就是其中的一种,另外还有GMS插件。CPG插件是最高级的一种插件,其自由灵活程度、上手开发难度都比GMS插件要高得多。原创 2021-03-03 08:04:38 · 3085 阅读 · 9 评论