CDR插件开发之Application(应用程序)
在CorelDRAW提供的對(duì)象模型中,Application是被開(kāi)發(fā)者經(jīng)常使用的一個(gè)對(duì)象,也是最頂級(jí)的對(duì)象。本文對(duì)CorelDRAW(以下簡(jiǎn)稱(chēng)CDR)對(duì)象模型中的 Application 類(lèi)做了一個(gè)簡(jiǎn)單的解析,以幫助開(kāi)發(fā)者能夠清楚認(rèn)識(shí) Application 類(lèi)的作用。
Application(應(yīng)用程序)
Application是最頂層的對(duì)象,表示一個(gè) CorelDRAW 軟件啟動(dòng)后對(duì)應(yīng)的實(shí)例。所謂實(shí)例,可以這樣理解:舉個(gè)例子,在你電腦上安裝了 CorelDRAW X8,當(dāng)你啟動(dòng)了X8,就有一個(gè)X8的實(shí)例,再啟動(dòng)一個(gè)X8,就又是一個(gè)新的實(shí)例。當(dāng)然,CorelDRAW 軟件本身是不支持多開(kāi)的,也就是同時(shí)只能有一個(gè)X8啟動(dòng)。
Application對(duì)象定義了 CorelDRAW 應(yīng)用程序的屬性,它是 CorelDRAW 對(duì)象層次結(jié)構(gòu)中的頂級(jí)對(duì)象,通過(guò)它提供的函數(shù)、方法和屬性,你可以訪問(wèn)應(yīng)用程序的所有其他特性,因此該對(duì)象具備了操控 CorelDRAW 的絕大部分能力。在 CorelDRAW 中,Application對(duì)象是所有其他對(duì)象的“根”。
一、獲取Application應(yīng)用程序?qū)ο蟮膶?shí)例
參考代碼(VBA):
在CDR自帶的宏編輯器中,不需要自己手動(dòng)實(shí)例化對(duì)象,可以直接使用 Application 來(lái)獲取當(dāng)前的應(yīng)用程序?qū)ο蟮膶?shí)例,參考代碼如下:
MsgBox "當(dāng)前CDR版本:" & Application.Version以上代碼運(yùn)行效果如下:
參考代碼(C#):
在C#中,CDR應(yīng)用程序?qū)ο蟮膶?shí)例,是通過(guò)插件在加載過(guò)程中的參數(shù)進(jìn)行初始化的:
// CDR應(yīng)用程序全局對(duì)象的靜態(tài)引用 public static corel.Application myCdrApp { get; set; }/// <summary> /// 構(gòu)造器 /// </summary> public ControlUI(corel.Application cdrApp) {// 插件構(gòu)造時(shí)會(huì)通過(guò)參數(shù)將應(yīng)用程序的實(shí)例傳進(jìn)來(lái)// 開(kāi)發(fā)者可以用全局靜態(tài)變量將其保存下來(lái),后續(xù)使用自己的引用對(duì)象即可myCdrApp = cdrApp; }參考代碼(C++):
在C++中,CDR應(yīng)用程序?qū)ο蟮膶?shí)例,是通過(guò)插件在加載過(guò)程中的參數(shù)進(jìn)行初始化的:
STDMETHODIMP HelloWorldPlugin::raw_OnLoad(VGCore::IVGApplication* Application) {// 當(dāng)CDR加載時(shí),此時(shí)獲得了一個(gè)應(yīng)用程序的實(shí)例,將其傳遞給 cdrAppVGCore::IVGApplication* cdrApp = Application;if (cdrApp) {// 添加引用cdrApp->AddRef();}MessageBox(NULL, cdrApp->Version, _bstr_t("CDR版本信息"), MB_OK);return S_OK; }參考代碼(JavaScript):
在較高版本的CDR版本中,可以通過(guò)頂級(jí)對(duì)象 host 來(lái)獲取當(dāng)前的應(yīng)用程序?qū)ο蟮膶?shí)例,參考代碼如下:
// 通過(guò)host頂級(jí)對(duì)象得到應(yīng)用程序的實(shí)例,彈框顯示當(dāng)前CDR應(yīng)用程序的路徑 alert(host.Application.Version);以上代碼運(yùn)行效果如下:
二、創(chuàng)建CDR文檔
在獲得了CDR應(yīng)用程序?qū)ο蟮膶?shí)例后,就可以通過(guò)它來(lái)實(shí)現(xiàn)針對(duì)CDR的各種操作。例如下面的代碼例子,創(chuàng)建了一個(gè)新的CorelDRAW文檔,向文檔的活動(dòng)層添加一個(gè)彩色橢圓,并以新名稱(chēng)保存新文檔:
參考代碼(VBA):
Sub Test()' 聲明一個(gè)文檔對(duì)象,取名為docDim doc As Document' 調(diào)用應(yīng)用程序提供的 CreateDocument(創(chuàng)建文檔)的方法,創(chuàng)建(實(shí)例化)一個(gè)文檔對(duì)象(等同于人工操作中的“文件” → “新建”)Set doc = Application.CreateDocument()' 在新建文檔的當(dāng)前活動(dòng)圖層上,創(chuàng)建一個(gè)橢圓,并填充CMYK顏色,值分別為:0, 100, 100, 0doc.ActiveLayer.CreateEllipse(0, 3, 5, 1).Fill.UniformColor.CMYKAssign 0, 100, 100, 0' 將文檔另存到當(dāng)前電腦我的文檔目錄下,文件名稱(chēng):test.cdrdoc.SaveAs "C:\Users\Administrator\Documents\test.cdr"' 消息提示MsgBox "文檔保存成功,請(qǐng)查看" End Sub參考代碼(C#):
using Corel.Interop.VGCore; using System.Windows; using corel = Corel.Interop.VGCore;namespace CdrCloudPlugin {class Demo {public void Test(corel.Application cdrApp) {// 聲明一個(gè)文檔對(duì)象,取名為docDocument doc;// 調(diào)用應(yīng)用程序提供的 CreateDocument(創(chuàng)建文檔)的方法,創(chuàng)建(實(shí)例化)一個(gè)文檔對(duì)象(等同于人工操作中的“文件” → “新建”)doc = cdrApp.CreateDocument();// 在新建文檔的當(dāng)前活動(dòng)圖層上,創(chuàng)建一個(gè)橢圓,并填充CMYK顏色,值分別為:0, 100, 100, 0doc.ActiveLayer.CreateEllipse(0, 3, 5, 1).Fill.UniformColor.CMYKAssign(0, 100, 100, 0);// 將文檔另存到當(dāng)前電腦我的文檔目錄下,文件名稱(chēng):test.cdrdoc.SaveAs(@"C:\Users\Administrator\Documents\test.cdr");// 消息提示MessageBox.Show("文檔保存成功,請(qǐng)查看");}} }參考代碼(C++):
void Test() {// 聲明一個(gè)文檔對(duì)象,取名為docVGCore::IVGDocumentPtr doc;// 調(diào)用應(yīng)用程序提供的 CreateDocument(創(chuàng)建文檔)的方法,創(chuàng)建(實(shí)例化)一個(gè)文檔對(duì)象(等同于人工操作中的“文件” → “新建”)doc = cdrApp->CreateDocument();// 在新建文檔的當(dāng)前活動(dòng)圖層上,創(chuàng)建一個(gè)橢圓,并填充CMYK顏色,值分別為:0, 100, 100, 0doc->ActiveLayer->CreateEllipse(0, 3, 5, 1, 0, 0, FALSE)->Fill->UniformColor->CMYKAssign(0, 100, 100, 0);// 將文檔另存到當(dāng)前電腦我的文檔目錄下,文件名稱(chēng):test.cdrdoc->SaveAs("C:/Users/Administrator/Documents/test.cdr", cdrApp->CreateStructSaveAsOptions());// 消息提示MessageBox(NULL, _bstr_t("文檔保存成功,請(qǐng)查看"), _bstr_t("www.cdrvba.com"), MB_OK); }參考代碼(JavaScript):
使用JS腳本時(shí),可能會(huì)出現(xiàn)部分API無(wú)法調(diào)用的情況,比如文檔的另存為(SaveAs),因此在部分場(chǎng)景下功能有限。
// 聲明一個(gè)文檔對(duì)象,取名為doc var doc; // 調(diào)用應(yīng)用程序提供的 CreateDocument(創(chuàng)建文檔)的方法,創(chuàng)建(實(shí)例化)一個(gè)文檔對(duì)象(等同于人工操作中的“文件” → “新建”) doc = host.Application.CreateDocument(); // 在新建文檔的當(dāng)前活動(dòng)圖層上,創(chuàng)建一個(gè)橢圓,并填充CMYK顏色,值分別為:0, 100, 100, 0 doc.ActiveLayer.CreateEllipse(0, 3, 5, 1).Fill.UniformColor.CMYKAssign(0, 100, 100, 0); // 消息提示 alert("ok");三、打開(kāi)CDR文檔
除了創(chuàng)建文檔外,還可以通過(guò)應(yīng)用程序提供的 OpenDocument 函數(shù)來(lái)打開(kāi)一個(gè)存在的CDR文檔。
參考代碼(VBA):
Sub Test()' 定義CDR文件的路徑Dim path As Stringpath = "F:\zebe\CDR\懸浮瓷鉆\未命名-1.cdr"' 檢查CDR文件是否存在If Dir(path) = "" ThenMsgBox "文件不存在:" & pathExit SubEnd If' 定義一個(gè)文檔對(duì)象的引用,取名為myDocDim myDoc As Document' 通過(guò)應(yīng)用程序?qū)ο筇峁┑?OpenDocument 方法來(lái)打開(kāi)一個(gè)已經(jīng)存在的CDR文檔Set myDoc = Application.OpenDocument(path) End Sub參考代碼(C#):
using Corel.Interop.VGCore; using System.IO; using System.Windows; using corel = Corel.Interop.VGCore;namespace CdrCloudPlugin {class Demo {public void Test(corel.Application cdrApp) {// 定義CDR文件的路徑string path = @"F:\zebe\CDR\懸浮瓷鉆\未命名-1.cdr";// 檢查CDR文件是否存在if (!File.Exists(path)) {MessageBox.Show("文件不存在:" + path);return;}// 定義一個(gè)文檔對(duì)象的引用,取名為myDocDocument myDoc;// 通過(guò)應(yīng)用程序?qū)ο筇峁┑?OpenDocument 方法來(lái)打開(kāi)一個(gè)已經(jīng)存在的CDR文檔myDoc = cdrApp.OpenDocument(path);}} }參考代碼(C++):
// 暫無(wú),待補(bǔ)充完善四、繪制直線和曲線段
Application對(duì)象還提供了圖形繪制的能力,比如創(chuàng)建直線或曲線段。
參考代碼(VBA):
Sub Test()' 創(chuàng)建一個(gè)新文檔Application.CreateDocument' 聲明曲線對(duì)象引用Dim crv As Curve' 聲明形狀對(duì)象引用Dim s As Shape' 聲明子路徑對(duì)象引用Dim sp As SubPath' 創(chuàng)建一個(gè)曲線對(duì)象,這時(shí)候曲線對(duì)象在內(nèi)存中,還只是一個(gè)數(shù)據(jù)Set crv = Application.CreateCurve(ActiveDocument)' 在曲線上創(chuàng)建一個(gè)子路徑Set sp = crv.CreateSubPath(1, 5)' 為曲線上的子路徑添加幾條線段(直線段、曲線段)sp.AppendLineSegment 2, 0sp.AppendCurveSegment2 5, 7, 6, 6, 3, 5sp.AppendCurveSegment2 7, 2, 3, 6, 7, 1sp.AppendLineSegment 9, 6' 將子路徑的第3個(gè)節(jié)點(diǎn)的類(lèi)型改為平滑節(jié)點(diǎn)sp.Nodes(3).Type = cdrSmoothNode' 將內(nèi)存中的曲線對(duì)象,創(chuàng)建到當(dāng)前圖層上,這樣就可以看見(jiàn)了Set s = ActiveLayer.CreateCurve(crv) End Sub參考代碼(C#):
using Corel.Interop.VGCore; using corel = Corel.Interop.VGCore;namespace CdrCloudPlugin {class Demo {public void Test(corel.Application cdrApp) {// 創(chuàng)建一個(gè)新文檔cdrApp.CreateDocument();// 聲明曲線對(duì)象引用Curve crv;// 聲明形狀對(duì)象引用Shape s;// 聲明子路徑對(duì)象引用SubPath sp;// 創(chuàng)建一個(gè)曲線對(duì)象,這時(shí)候曲線對(duì)象在內(nèi)存中,還只是一個(gè)數(shù)據(jù)crv = cdrApp.CreateCurve(cdrApp.ActiveDocument);// 在曲線上創(chuàng)建一個(gè)子路徑sp = crv.CreateSubPath(1, 5);// 為曲線上的子路徑添加幾條線段(直線段、曲線段)sp.AppendLineSegment(2, 0);sp.AppendCurveSegment2(5, 7, 6, 6, 3, 5);sp.AppendCurveSegment2(7, 2, 3, 6, 7, 1);sp.AppendLineSegment(9, 6);// 將子路徑的第3個(gè)節(jié)點(diǎn)的類(lèi)型改為平滑節(jié)點(diǎn)sp.Nodes[3].Type = cdrNodeType.cdrSmoothNode;// 將內(nèi)存中的曲線對(duì)象,創(chuàng)建到當(dāng)前圖層上,這樣就可以看見(jiàn)了s = cdrApp.ActiveLayer.CreateCurve(crv);}} }參考代碼(C++):
// 暫無(wú),待補(bǔ)充完善參考代碼(JavaScript):
// 創(chuàng)建一個(gè)新文檔 host.Application.CreateDocument(); // 聲明曲線對(duì)象引用 var crv; // 聲明形狀對(duì)象引用 var s; // 聲明子路徑對(duì)象引用 var sp; // 創(chuàng)建一個(gè)曲線對(duì)象,這時(shí)候曲線對(duì)象在內(nèi)存中,還只是一個(gè)數(shù)據(jù) crv = host.Application.CreateCurve(host.Application.ActiveDocument); // 在曲線上創(chuàng)建一個(gè)子路徑 sp = crv.CreateSubPath(1, 5); // 為曲線上的子路徑添加幾條線段(直線段、曲線段) sp.AppendLineSegment(2, 0); sp.AppendCurveSegment2(5, 7, 6, 6, 3, 5); sp.AppendCurveSegment2(7, 2, 3, 6, 7, 1); sp.AppendLineSegment(9, 6); // 將子路徑的第3個(gè)節(jié)點(diǎn)的類(lèi)型改為平滑節(jié)點(diǎn)(經(jīng)測(cè)試,JS獲取不到 sp 的 Nodes 對(duì)象,原因未知) // 將內(nèi)存中的曲線對(duì)象,創(chuàng)建到當(dāng)前圖層上,這樣就可以看見(jiàn)了 s = host.Application.ActiveLayer.CreateCurve(crv);上面創(chuàng)建曲線的代碼,運(yùn)行后效果如下所示:
五、創(chuàng)建顏色
Application對(duì)象提供了創(chuàng)建顏色的方法,可供開(kāi)發(fā)者靈活的使用自定義的顏色。
參考代碼(VBA):
Sub Test()' 判斷是否選擇了圖形If ActiveShape Is Nothing ThenMsgBox "請(qǐng)選擇要填充顏色的圖形"Exit SubEnd If' 聲明一個(gè)顏色對(duì)象Dim c As Color' 創(chuàng)建一個(gè)顏色對(duì)象Set c = CreateColor' 給顏色對(duì)象分配CMYK色值(青色)c.CMYKAssign 100, 0, 0, 0' 將當(dāng)前選擇的圖形填充為青色ActiveShape.Fill.ApplyUniformFill c End Sub參考代碼(C#):
using Corel.Interop.VGCore; using System.Windows; using corel = Corel.Interop.VGCore;namespace CdrCloudPlugin {class Demo {public void Test(corel.Application cdrApp) {// 判斷是否選擇了圖形if (cdrApp.ActiveShape == null) {MessageBox.Show("請(qǐng)選擇要填充顏色的圖形");return;}// 聲明一個(gè)顏色對(duì)象Color c;// 創(chuàng)建一個(gè)顏色對(duì)象c = cdrApp.CreateColor();// 給顏色對(duì)象分配CMYK色值(青色)c.CMYKAssign(100, 0, 0, 0);// 將當(dāng)前選擇的圖形填充為青色cdrApp.ActiveShape.Fill.ApplyUniformFill(c);}} }參考代碼(C++):
// 暫無(wú),待補(bǔ)充完善參考代碼(JavaScript):
注意:在JS中使用 return 會(huì)報(bào)錯(cuò),因此要通過(guò)判斷語(yǔ)句來(lái)實(shí)現(xiàn)邏輯的跳轉(zhuǎn)。
// 判斷是否選擇了圖形 if (host.ActiveShape == null) {alert("請(qǐng)選擇要填充顏色的圖形"); } else {// 聲明一個(gè)顏色對(duì)象var c;// 創(chuàng)建一個(gè)顏色對(duì)象c = host.Application.CreateColor();// 給顏色對(duì)象分配CMYK色值(青色)c.CMYKAssign(100, 0, 0, 0);// 將當(dāng)前選擇的圖形填充為青色host.ActiveShape.Fill.ApplyUniformFill(c); }上面創(chuàng)建顏色的代碼,運(yùn)行后效果如下所示:
六、Application應(yīng)用程序的屬性
以 CorelDRAW X7 版本為例,Application對(duì)象提供了 67 個(gè)可以給開(kāi)發(fā)者使用的屬性,分別如下:
| ActiveDocument | 活動(dòng)文檔。 |
| ActiveLayer | 活動(dòng)圖層。 |
| ActivePage | 活動(dòng)頁(yè)面。 |
| ActivePalette | 活動(dòng)調(diào)色板。 |
| ActiveSelection | 活動(dòng)選擇。 |
| ActiveSelectionRange | 活動(dòng)選擇范圍。 |
| ActiveShape | 活動(dòng)形狀。 |
| ActiveSpread | 活動(dòng)擴(kuò)展。 |
| ActiveTool | 活動(dòng)工具。 |
| ActiveTreeManager | 活動(dòng)樹(shù)管理器。 |
| ActiveVirtualLayer | 活動(dòng)虛擬圖層。 |
| ActiveWindow | 活動(dòng)窗口 |
| ActiveWorkspace | 活動(dòng)工作區(qū)。 |
| Application | 應(yīng)用程序。 |
| AppWindow | 應(yīng)用程序窗口。 |
| ArrowHeads | 箭頭對(duì)象。 |
| Class | 類(lèi)。 |
| Clipboard | 剪貼板。 |
| ColorManager | 顏色管理器。 |
| CommandBars | 命令欄。 |
| Components | 組件。 |
| ConfigPath | 配置路徑。 |
| DefaultColorContext | 默認(rèn)顏色上下文。 |
| Documents | 文檔。 |
| EnhancedOutlines | 增強(qiáng)輪廓。 |
| EventsEnabled | 事件是否開(kāi)啟。 |
| FontList | 字體列表。 |
| FrameWork | 框架。 |
| GlobalUserData | 全局用戶數(shù)據(jù)。 |
| GMSManager | 全局宏管理器。 |
| ID | ID。 |
| LanguagePath | 語(yǔ)言路徑。 |
| MainMenu | 主菜單。 |
| Name | 名稱(chēng)。 |
| Optimization | 是否開(kāi)啟優(yōu)化。 |
| OutlineStyles | 輪廓樣式。 |
| PageSizes | 頁(yè)面尺寸。 |
| PaletteManager | 調(diào)色板管理器。 |
| Palettes | 調(diào)色板 |
| PanoseMatching | PANOSE匹配類(lèi)型。 |
| Parent | 上級(jí)。 |
| Path | 路徑。 |
| PatternCanvases | 圖案畫(huà)布。 |
| PlatformVersionMajor | 平臺(tái)主要版本。 |
| PlatformVersionMinor | 平臺(tái)次要版本。 |
| Printers | 打印機(jī)。 |
| PrintJob | 打印作業(yè)。 |
| ProgramPath | 程序路徑。 |
| RecentFiles | 最近的文件。 |
| SessionUserData | 會(huì)話中的用戶數(shù)據(jù)。 |
| SetupPath | 設(shè)置文件夾的路徑。 |
| StartupMode | 啟動(dòng)模式。 |
| Status | 狀態(tài)。 |
| StatusBar | 狀態(tài)欄。 |
| SymbolLibraries | 符號(hào)庫(kù)。 |
| UILanguage | 用戶界面語(yǔ)言。 |
| Unit | 單位。 |
| UserDataPath | 用戶數(shù)據(jù)路徑。 |
| UserWorkspacePath | 用戶工作空間路徑。 |
| VBE | 宏編輯器。 |
| Version | 版本。 |
| VersionBuild | 構(gòu)建版本。 |
| VersionMajor | 主要版本。 |
| VersionMinor | 次要版本。 |
| Visible | 是否可見(jiàn)。 |
| Windows | 窗口。 |
| Workspaces | 工作區(qū)。 |
七、Application應(yīng)用程序的方法和函數(shù)
以 CorelDRAW X7 版本為例,Application對(duì)象提供了 59 個(gè)可以給開(kāi)發(fā)者使用的方法和函數(shù),分別如下:
| AddPluginCommand | 添加插件命令。 |
| AdviseEvents | 通知事件。 |
| cdrMixedDouble | CDR混合雙精度。 |
| cdrMixedLong | CDR混合長(zhǎng)整數(shù)。 |
| cdrMixedSingle | CDR混合單精度。 |
| CheckPlatformVersion | 檢查平臺(tái)版本。 |
| ConvertFromUnicode | 從Unicode轉(zhuǎn)換。 |
| ConvertToUnicode | 轉(zhuǎn)換到Unicode。 |
| ConvertUnits | 轉(zhuǎn)換單位。 |
| CreateBWColor | 創(chuàng)建BW顏色。 |
| CreateCMYColor | 創(chuàng)建CMY顏色。 |
| CreateCMYKColor | 創(chuàng)建CMYK顏色。 |
| CreateColor | 創(chuàng)建顏色。 |
| CreateColorContext | 創(chuàng)建顏色上下文。 |
| CreateColorContext2 | 創(chuàng)建顏色上下文2。 |
| CreateColorEx | 創(chuàng)建顏色擴(kuò)展。 |
| CreateCurve | 創(chuàng)建曲線。 |
| CreateDocument | 創(chuàng)建文檔。 |
| CreateDocumentEx | 創(chuàng)建文檔擴(kuò)展。 |
| CreateDocumentFromTemplate | 從模板創(chuàng)建文檔。 |
| CreateDuotone | 創(chuàng)建雙色版。 |
| CreateFillMetadata | 創(chuàng)建元數(shù)據(jù)填充。 |
| CreateGrayColor | 創(chuàng)建灰度顏色。 |
| CreateHLSColor | 創(chuàng)建HLS顏色。 |
| CreateHSBColor | 創(chuàng)建HSB顏色。 |
| CreateLabColor | 創(chuàng)建LAB顏色。 |
| CreateNodeRange | 創(chuàng)建節(jié)點(diǎn)范圍。 |
| CreateOutlineStyle | 創(chuàng)建輪廓樣式。 |
| CreatePaletteColor | 創(chuàng)建調(diào)色板顏色。 |
| CreatePatternCanvas | 創(chuàng)建圖案畫(huà)布。 |
| CreateProofColorSettings | 創(chuàng)建一個(gè) ProofColorSettings 對(duì)象。 |
| CreateRect | 創(chuàng)建矩形區(qū)域。 |
| CreateRegistrationColor | 創(chuàng)建注冊(cè)顏色。 |
| CreateRGBColor | 創(chuàng)建RGB顏色。 |
| CreateSegmentRange | 創(chuàng)建線段范圍。 |
| CreateShapeRange | 創(chuàng)建形狀范圍。 |
| CreateSpotColor | 創(chuàng)建專(zhuān)色。 |
| CreateSpotColorByName | 根據(jù)名稱(chēng)創(chuàng)建專(zhuān)色。 |
| CreateStructCreateOptions | 創(chuàng)建結(jié)構(gòu)化創(chuàng)建選項(xiàng)。 |
| CreateStructExportOptions | 創(chuàng)建結(jié)構(gòu)化導(dǎo)出選項(xiàng)。 |
| CreateStructImportOptions | 創(chuàng)建結(jié)構(gòu)化導(dǎo)入選項(xiàng)。 |
| CreateStructOpenOptions | 創(chuàng)建結(jié)構(gòu)化創(chuàng)打開(kāi)選項(xiàng)。 |
| CreateStructPaletteOptions | 創(chuàng)建結(jié)構(gòu)化調(diào)色板選項(xiàng)。 |
| CreateStructPasteOptions | 創(chuàng)建結(jié)構(gòu)化粘貼選項(xiàng)。 |
| CreateStructSaveAsOptions | 創(chuàng)建結(jié)構(gòu)化另存為選項(xiàng)。 |
| CreateYIQColor | 創(chuàng)建YIQ顏色。 |
| Evaluate | 計(jì)算表達(dá)式。 |
| ForceUpdateFontTable | 強(qiáng)制更新字體表。 |
| GetSupportedOpenTypeFeatures | 獲得支持的開(kāi)放類(lèi)型功能。 |
| ImportWorkspace | 導(dǎo)入工作區(qū)。 |
| InitializeVBA | 初始化VBA。 |
| IsUILanguageAvailable | 用戶界面語(yǔ)言是否可用。 |
| OpenDocument | 打開(kāi)文檔。 |
| OpenDocumentAsCopy | 作為副本打開(kāi)文檔。 |
| OpenDocumentEx | 打開(kāi)文檔擴(kuò)展。 |
| Quit | 退出。 |
| Refresh | 刷新。 |
| RemovePluginCommand | 移除插件命令。 |
| UnadviseEvents | 解除通知事件。 |
八、Application應(yīng)用程序的事件
以 CorelDRAW X7 版本為例,Application對(duì)象提供了 21 個(gè)可以給開(kāi)發(fā)者使用的事件,分別如下:
| DocumentAfterExport | 文檔導(dǎo)出后事件。 |
| DocumentAfterPrint | 文檔打印后事件。 |
| DocumentAfterSave | 文檔保存后事件。 |
| DocumentBeforeExport | 文檔導(dǎo)出前事件。 |
| DocumentBeforePrint | 文檔打印前事件。 |
| DocumentBeforeSave | 文檔保存前事件。 |
| DocumentClose | 文檔關(guān)閉事件。 |
| DocumentNew | 文檔新建事件。 |
| DocumentOpen | 文檔打開(kāi)事件。 |
| OnPluginCommand | 插件命令事件。 |
| OnUpdatePluginCommand | 更新插件命令事件。 |
| QueryDocumentClose | 文檔詢問(wèn)關(guān)閉事件。 |
| QueryDocumentExport | 文檔詢問(wèn)導(dǎo)出事件。 |
| QueryDocumentPrint | 文檔詢問(wèn)打印事件。 |
| QueryDocumentSave | 文檔詢問(wèn)保存事件。 |
| QueryQuit | 詢問(wèn)退出事件。 |
| Quit | 退出事件。 |
| SelectionChange | 選擇改變事件。 |
| Start | 啟動(dòng)事件。 |
| WindowActivate | 窗口成為活動(dòng)狀態(tài)事件。 |
| WindowDeactivate | 窗口失去活動(dòng)狀態(tài)事件。 |
以 DocumentNew(文檔新建)事件為例,以下是事件的使用例子舉例:
參考代碼(VBA):
注意:由于 Application 的事件是整個(gè)CDR應(yīng)用程序級(jí)別的,因此需要將相關(guān)事件處理的代碼,編寫(xiě)在 GlobalMacros.gms 中才可以生效。
Private Sub GlobalMacroStorage_DocumentNew(ByVal doc As Document, ByVal FromTemplate As Boolean, ByVal Template As String, ByVal IncludeGraphics As Boolean)MsgBox "檢測(cè)到新文檔被創(chuàng)建,文檔名稱(chēng):" & doc.Title End Sub參考代碼(C#):
using System.Windows; using corel = Corel.Interop.VGCore;namespace CdrCloudPlugin {class Demo {public void Test(corel.Application cdrApp) {// 綁定文檔新建事件cdrApp.DocumentNew += CdrApp_DocumentNew;}// 文檔新建事件處理方法private static void CdrApp_DocumentNew(corel.Document Doc, bool FromTemplate, string Template, bool IncludeGraphics) {MessageBox.Show("檢測(cè)到新文檔被創(chuàng)建,文檔名稱(chēng):" + Doc.Title);}} }參考代碼(C++):
// 暫無(wú),待補(bǔ)充完善上面針對(duì)文檔新建事件處理的代碼,每當(dāng)新建一個(gè)文檔時(shí),其運(yùn)行效果如下所示:
九、本文總結(jié)
Application 類(lèi)是整個(gè) CorelDRAW 對(duì)象層次結(jié)構(gòu)中的頂級(jí)對(duì)象,通過(guò)它提供的函數(shù)、方法和屬性,你可以訪問(wèn)應(yīng)用程序的所有其他特性。
十、寫(xiě)給讀者
創(chuàng)作不易,每篇文章的創(chuàng)作都要花費(fèi)作者很大的時(shí)間和精力,好文要頂!請(qǐng)通過(guò)評(píng)論、收藏的形式來(lái)支持作者。因作者水平有限,如文章中有錯(cuò)誤還請(qǐng)指出來(lái),方便作者修復(fù),以免誤導(dǎo)他人。若遇到代碼不能運(yùn)行或者報(bào)錯(cuò)的情況,請(qǐng)留言評(píng)論,作者會(huì)抽空回復(fù),協(xié)助解決。
總結(jié)
以上是生活随笔為你收集整理的CDR插件开发之Application(应用程序)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 绘制svg
- 下一篇: 一篇文章读懂,物联网项目的5大技术要素