CorelDRAW CPG 扩展开发: CPG(Corel Plug-in Gallery)是 CorelDRAW 的一个扩展机制,可以开发自定义的插件和工具。

Hongwenjun 68b5491c0c 使用框选的形状进行群组,竟然比直接使用ShapeRange->Group()快了10倍 9 kuukautta sitten
01_lycpg64 552ccad52a 添加Makefile 适合 MSVC2022 请使用 namke 编译 9 kuukautta sitten
02_WelcomeScreen 552ccad52a 添加Makefile 适合 MSVC2022 请使用 namke 编译 9 kuukautta sitten
03_ClearFill 552ccad52a 添加Makefile 适合 MSVC2022 请使用 namke 编译 9 kuukautta sitten
04_ToolsBox c210d61a6e 学习项目06_cdrPDF2Clip分离按钮功能到单独cpp文件,添加 Makefile 用来编译 10 kuukautta sitten
05_ToolsBox_CreateDialog c210d61a6e 学习项目06_cdrPDF2Clip分离按钮功能到单独cpp文件,添加 Makefile 用来编译 10 kuukautta sitten
06_cdrPDF2Clip c210d61a6e 学习项目06_cdrPDF2Clip分离按钮功能到单独cpp文件,添加 Makefile 用来编译 10 kuukautta sitten
07_VBA_CallCPG 552ccad52a 添加Makefile 适合 MSVC2022 请使用 namke 编译 9 kuukautta sitten
08_SmartGroup 68b5491c0c 使用框选的形状进行群组,竟然比直接使用ShapeRange->Group()快了10倍 9 kuukautta sitten
TypeLibs a1f2bc8b5a CorelDRAW Graphics Suite 2020 Programs64 TypeLibs 11 kuukautta sitten
VGCoreAuto a1f2bc8b5a CorelDRAW Graphics Suite 2020 Programs64 TypeLibs 11 kuukautta sitten
bin c7f05954aa CorelDRAW CPG工具初步完成 10 kuukautta sitten
img f7139e5e7c CorelDRAW-CPG C++ 编程傻瓜入门文档 和 智能群组项目 9 kuukautta sitten
README.md f7139e5e7c CorelDRAW-CPG C++ 编程傻瓜入门文档 和 智能群组项目 9 kuukautta sitten

README.md

捐赠 蘭雅 CorelDRAW CPG 开源项目

CorelDRAW-CPG

CorelDRAW CPG 扩展开发: CPG(Corel Plug-in Gallery)是 CorelDRAW 的一个扩展机制,可以开发自定义的插件和工具。

CorelDRAW-CPG C++ 编程傻瓜入门文档.xls 下载

CorelDRAW Graphics Suite 2020 Programs64 TypeLibs

CorelDRAW CPG 扩展开发环境之最简陋环境搭建

  • https://wwm.lanzout.com/b0r9anaqb 密码:1diw

  • 下载 MSVC2022_X64_mini.7z 压缩包解压到任意目录下, 推荐 C:\MSVC2022

  • 配置 MSVC2022 运行环境,参考如下

    INCLUDE=C:\MSVC2022\include
    LIB=C:\MSVC2022\lib
    Path=C:\MSVC2022\bin;%PATH%
    

构建: Releaselycpg64 中 (编译器: Microsoft Visual C++ 2022)

cl.exe /nologo /W3 /EHsc /Ox /DNDEBUG /IC:\MSVC2022\include /ITypeLibs  /c 01_lycpg64\main.cpp /Fo.\main.obj

link.exe /dll /nologo /LIBPATH:C:\MSVC2022\lib /out:lycpg64.dll Gdi32.lib user32.lib Kernel32.lib .\main.obj

构建 lycpg64.dll CPG插件, 编译示例图,改名成 lycpg64.cpg ,然后复制到 CorelDRAW\Draw\Plugins64 目录

感谢 fersatgit 学习项目 03_ClearFill 修复CorelDRAW 2020 使用错误

  • 答疑解惑网址: https://github.com/fersatgit/SmartDepart/issues/1

    STDMETHODIMP CVGAppPlugin::raw_StartSession()
    {
    try
    {
    m_pApp->AddPluginCommand(_bstr_t("ClearFill"), _bstr_t("Clear Fill"), _bstr_t("Clears fill from selected objects"));
    
    // CorelDRAW X6 使用 VGCore::CommandBarControlPtr ctl
    // CorelDRAW 2020 SDK 使用  VGCore::ICUIControlPtr ctl
    
    // https://github.com/fersatgit/SmartDepart/issues/1    // 感谢 fersatgit 修复CorelDRAW 2020 使用错误
    VGCore::ICUIControlPtr ctl = m_pApp->CommandBars->Item[_bstr_t("Standard")]->Controls->AddCustomButton(VGCore::cdrCmdCategoryPlugins, _bstr_t("ClearFill"), 1, VARIANT_FALSE);
    //  _bstr_t bstrPath(m_pApp->Path + _bstr_t("Plugins64\\ClearFill.bmp"));
    ctl->SetIcon2(_bstr_t("guid://d2fdc0d9-09f8-4948-944c-4297395c05b7"));
    
    m_lCookie = m_pApp->AdviseEvents(this);
    }
    catch(_com_error &e)
    {
    MessageBox(NULL, e.Description(), _T("Error"), MB_ICONSTOP);
    }
    return S_OK;
    }
    

学习项目 05_ToolsBox_CreateDialog 增加LOGO, CQL语法使用,悬浮窗口,返回父窗口

  • 创建非模态对话框,使用附加数据传递m_pApp 指针: 使用API CreateDialogParamSetWindowLongPtr
  • 将焦点返回到父窗口: SetFocus(GetParent(hDlg));

命令行编译命令

cl.exe /nologo /W3 /EHsc  /Ox /DNDEBUG    /I..\TypeLibs  /c ToolsBox.cpp ToolsBox.obj
rc.exe  -fo.\ToolsBox.res ToolsBox.rc
link.exe /dll /nologo /out:lycpg64.dll Gdi32.lib user32.lib Kernel32.lib ToolsBox.obj  ToolsBox.res

CPG 使用 CQL语法示例

char buf[256] = { 0 };
sprintf(buf, "@Outline.Color.rgb[.r='%d' And .g='%d' And .b='%d']", r, g, b);
auto cql = _bstr_t(buf);
// MessageBox(NULL, cql, "cql 轮廓颜色", MB_ICONSTOP);
auto sr = cdr->ActivePage->Shapes->FindShapes(_bstr_t(), cdrNoShape, VARIANT_TRUE, cql);
sr->CreateSelection();

学习项目 06_cdrPDF2Clip 分离按钮功能到单独cpp文件 cdrPDF2Clip.cppcdrapp.cpp,添加 Makefile 用来编译

使用 Makefile 用来编译,参考视频

nmake
nmake install
nmake clean