我们先来看最简单的 命令行程序 exe 调用 CorelDRAW程序,下面的源码 和 C 语言的经典 Hello World! 很象,只是 头文件换成了 #import "VGCoreAuto.tlb" 。如代码所示,和CorelDRAW程序使用 Windows COM 技术绑定接口,然后使用指针 auto doc = app->ActiveDocument; 指向 CorelDRAW 中的文档。如果没有打开CorelDRAW,程序会自动打开 CorelDRAW ,新建文件一个文件。
源码: exeCallCorelDRAW.cpp
#import "VGCoreAuto.tlb"
int main() {
HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr)) {
VGCore::IVGApplicationPtr app(L"CorelDRAW.Application.16");
app->Visible = VARIANT_TRUE;
auto doc = app->ActiveDocument;
if (!doc)
doc = app->CreateDocument();
CoUninitialize();
}
return 0;
}
基本接口完成以后,我们再来添加一个实用的功能,CQL按轮廓色查找物件:
#define corel VGCore::IVGApplication
using namespace VGCore;
bool cql_OutlineColor(corel *cdr)
{
auto col = cdr->CreateCMYKColor(0, 100, 100, 0);
auto s = cdr->ActiveShape;
col-> CopyAssign(s->Outline->Color);
col->ConvertToRGB();
auto r = col->RGBRed;
auto g = col->RGBGreen;
auto b = col->RGBBlue;
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);
auto sr = cdr->ActivePage->Shapes->FindShapes(_bstr_t(), cdrNoShape, VARIANT_TRUE, cql);
sr->CreateSelection();
return true;
}
接下来,我们再给程序做个极简单的窗口程序,详细代码见资源包。
把原来的 main 函数改名成 cpg_main,在窗口程序中调用。
这个CQL源码只有2个文件:如下图。
cpg.cpp 是windows 窗口代码
app.cpp 是应用代码,由上面的代码组合修改而成
如果你也喜欢自己编写 CorelDRAW 插件,蘭雅向你推荐 CDR开发者联盟
,从这里可以得到CDR插件的各种语言源码