|
@@ -0,0 +1,159 @@
|
|
|
|
+#import "VGCoreAuto.tlb"
|
|
|
|
+#define corel VGCore::IVGApplication
|
|
|
|
+using namespace VGCore;
|
|
|
|
+bool cql_OutlineColor(corel *cdr);
|
|
|
|
+int cpg_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();
|
|
|
|
+
|
|
|
|
+ cql_OutlineColor(app);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ CoUninitialize();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+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;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#include <windows.h>
|
|
|
|
+
|
|
|
|
+#define ID_BUTTON_TOOLS 1
|
|
|
|
+#define ID_BUTTON_MOVE 2
|
|
|
|
+#define ID_BUTTON_CLOSE 3
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+int cpg_main();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+ switch (uMsg) {
|
|
|
|
+ case WM_COMMAND:
|
|
|
|
+
|
|
|
|
+ switch (LOWORD(wParam)) {
|
|
|
|
+ case ID_BUTTON_TOOLS:{
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cpg_main();
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case ID_BUTTON_MOVE: {
|
|
|
|
+
|
|
|
|
+ MoveWindow(hwnd, GetSystemMetrics(SM_CXSCREEN) / 2, 0, 90, 30, TRUE);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case ID_BUTTON_CLOSE:
|
|
|
|
+
|
|
|
|
+ PostMessage(hwnd, WM_CLOSE, 0, 0);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case WM_DESTROY:
|
|
|
|
+
|
|
|
|
+ PostQuitMessage(0);
|
|
|
|
+ return 0;
|
|
|
|
+ default:
|
|
|
|
+
|
|
|
|
+ return DefWindowProc(hwnd, uMsg, wParam, lParam);
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+HICON LoadSystemIcon(LPCTSTR iconName) { return LoadIcon(NULL, iconName); }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+ const char CLASS_NAME[] = "NoTitleWindow";
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ WNDCLASS wc = {};
|
|
|
|
+
|
|
|
|
+ wc.lpfnWndProc = WindowProc;
|
|
|
|
+
|
|
|
|
+ wc.hInstance = hInstance;
|
|
|
|
+
|
|
|
|
+ wc.lpszClassName = CLASS_NAME;
|
|
|
|
+
|
|
|
|
+ wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
|
|
|
+
|
|
|
|
+ wc.style = CS_HREDRAW | CS_VREDRAW;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ RegisterClass(&wc);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ int windowWidth = 90; int windowHeight = 30;
|
|
|
|
+
|
|
|
|
+ int x = (GetSystemMetrics(SM_CXSCREEN) - windowWidth) / 2;
|
|
|
|
+ int y = (GetSystemMetrics(SM_CYSCREEN) - windowHeight) / 2;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ HWND hwnd = CreateWindowEx(WS_EX_TOPMOST, CLASS_NAME, NULL, WS_POPUP, x, y, windowWidth, windowHeight, NULL, NULL, hInstance, NULL);
|
|
|
|
+ if (hwnd == NULL) { return 0; }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ HICON hIconTools = LoadSystemIcon(IDI_APPLICATION);
|
|
|
|
+ HICON hIconMove = LoadSystemIcon(IDI_ASTERISK);
|
|
|
|
+ HICON hIconClose = LoadSystemIcon(IDI_ERROR);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ HWND hButtonTools = CreateWindow("BUTTON", "LYCPG", WS_VISIBLE | WS_CHILD | BS_FLAT, 0, 0, 60, 30, hwnd,
|
|
|
|
+ (HMENU)ID_BUTTON_TOOLS, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ HWND hButtonMove = CreateWindow("BUTTON", NULL, WS_VISIBLE | WS_CHILD | BS_FLAT | BS_ICON, 60, 15, 30, 15, hwnd,
|
|
|
|
+ (HMENU)ID_BUTTON_MOVE, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL);
|
|
|
|
+ SendMessage(hButtonMove, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIconMove);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ HWND hButtonClose = CreateWindow("BUTTON", NULL, WS_VISIBLE | WS_CHILD | BS_FLAT | BS_ICON, 60, 0, 30, 15, hwnd,
|
|
|
|
+ (HMENU)ID_BUTTON_CLOSE, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL);
|
|
|
|
+ SendMessage(hButtonClose, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIconClose);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ ShowWindow(hwnd, nShowCmd);
|
|
|
|
+ UpdateWindow(hwnd);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ MSG msg;
|
|
|
|
+ while (GetMessage(&msg, NULL, 0, 0)) {
|
|
|
|
+ TranslateMessage(&msg);
|
|
|
|
+ DispatchMessage(&msg);
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+}
|