ObjectARX, AutoCAD. Среда программирования библиотеки C++


Использование COM, чтобы обратиться к AutoCAD ActiveX Автоматизация - часть 3


VARIANT index;

VariantInit(&index);

V_VT(&index) = VT_I4;

V_I4(&index) = 0;

pMenuGroups->Item(index, &pMenuGroup);

pMenuGroups->Release();

pMenuGroup->get_Menus(&pPopUpMenus);

pMenuGroup->Release();

 

11 В зависимости от того, создано ли меню уже, или создает новое всплывающее меню или удаляют предварительно созданный. Следующий код заканчивает пример:

WCHAR wstrMenuName[256];

MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,

"AsdkComAccess", -1, wstrMenuName, 256);

if (!bIsMenuLoaded) {

pPopUpMenus->Add(wstrMenuName, &pPopUpMenu);

if (pPopUpMenu != NULL) {

pPopUpMenu->put_Name(wstrMenuName);

WCHAR wstrMenuItemName[256];

MultiByteToWideChar(CP_ACP, 0,"&Add A ComCircle",

-1, wstrMenuItemName, 256);

WCHAR wstrMenuItemMacro[256];

MultiByteToWideChar(CP_ACP, 0, "AsdkComCircle ",

-1, wstrMenuItemMacro, 256);

VariantInit(&index);

V_VT(&index) = VT_I4;

V_I4(&index) = 0;

pPopUpMenu->AddMenuItem(index, wstrMenuItemName,

wstrMenuItemMacro, &pPopUpMenuItem);

VariantInit(&index);

V_VT(&index) = VT_I4;

V_I4(&index) = 1;

pPopUpMenu->AddSeparator(index,

&pPopUpMenuItem);

MultiByteToWideChar(CP_ACP, 0,

"Auto&LISP Example", -1,

wstrMenuItemName, 256);

MultiByteToWideChar(CP_ACP, 0,

"(prin1 \"Hello\") ", -1,

wstrMenuItemMacro, 256);

VariantInit(&index);

V_VT(&index) = VT_I4;

V_I4(&index) = 2;

pPopUpMenu->AddMenuItem(index, wstrMenuItemName,

wstrMenuItemMacro, &pPopUpMenuItem);

VariantInit(&index);

V_VT(&index) = VT_I4;

V_I4(&index) = numberOfMenus - 2;;

pPopUpMenu->InsertInMenuBar(index);

pPopUpMenu->Release();

pPopUpMenuItem->Release();

bIsMenuLoaded = true;

}else {

acutPrintf("\nMenu not created.");

}

}

else {

VariantInit(&index);

V_VT(&index) = VT_BSTR;

V_BSTR(&index) = wstrMenuName;

pPopUpMenus->RemoveMenuFromMenuBar(index);




Начало  Назад  Вперед



Книжный магазин