AcApProfileManagerReactor уведомления класса
Уведомление | Связанный Метод |
Текущий профиль собирается быть измененным | AcApProfileManagerReactor::currentProfileWillChange |
Текущий профиль был изменен | AcApProfileManagerReactor::currentProfileChanged |
Текущий профиль собирается быть сброшенным | AcApProfileManagerReactor::currentProfileWillBeReset |
Текущий профиль был сброшен | AcApProfileManagerReactor::currentProfileReset |
Не-текущий профиль собирается быть сброшенным | AcApProfileManagerReactor::profileWillReset |
Не-текущий профиль был сброшен | AcApProfileManagerReactor:: profileReset |
Пример менеджера профилей
Следующая выборка демонстрирует использование Классов AcApProfileManagerReactor и AcApProfileManager:
// Определить класс, полученный из AcApProfileManagerReactor, чтобы управлять уведомлениями.
//
class AsdkProfileManagerReactor : public AcApProfileManagerReactor
{
public:
void currentProfileWillChange(const char *newProfile);
void currentProfileChanged(const char *newProfile);
void currentProfileWillBeReset(const char *curProfile);
void currentProfileReset(const char *curProfile);
void profileWillReset(const char *profName);
void profileReset(const char *proName);
};
// Define the notification functions.
//
void
AsdkProfileManagerReactor::
currentProfileWillChange(const char *newProfile)
{
acutPrintf("\nCurrent profile will change: %s", newProfile);
}
void
AsdkProfileManagerReactor::
currentProfileChanged(const char *newProfile)
{
acutPrintf("\nCurrent profile changed: %s", newProfile);
}
void
AsdkProfileManagerReactor::
currentProfileWillBeReset(const char *curProfile)
{
acutPrintf("\nCurrent profile will be reset: %s", curProfile);
}
void
AsdkProfileManagerReactor::
currentProfileReset(const char *curProfile)
{
acutPrintf("\nCurrent profile has been reset: %s", curProfile);
}
void
AsdkProfileManagerReactor::
profileWillReset(const char *profName)
{
acutPrintf("\nNon-current profile will be reset: %s", profName);
}
void
AsdkProfileManagerReactor::
profileReset(const char *profName)
{
acutPrintf("\nNon-current profile has been reset:%s", profName);
}
void
aFunction()
{
acutPrintf("This is AsdkProfileSample Test Application...\n");
// Attach the reactor for the duration of this command. Normally
// this would be added upon application initialization.
//
AsdkProfileManagerReactor *pProfileRector =
new AsdkProfileManagerReactor();
acProfileManagerPtr()->addReactor(pProfileRector);
// Obtain the path for the registry keys and print it out.
//
char *pstrKey;
acProfileManagerPtr()->ProfileRegistryKey(pstrKey, NULL);
if (pstrKey!= NULL) {
acutPrintf("\nThe profiles registry key is: %s", pstrKey);
acutDelString(pstrKey);
}
// Get the list of all profiles in the user’s configuration
// and print them out.
//
AcApProfileNameArray arrNameList;
int nProfiles =
acProfileManagerPtr()->ProfileListNames(arrNameList);
acutPrintf("\nNumber of profiles currently "
"in the user profile list is: %d", nProfiles);
for (int i = 0; i < nProfiles; i++)
acutPrintf("\nProfile name is: %s", arrNameList[i]);
// Copy the unnamed profile to the AsdkTestProfile.
//
acProfileManagerPtr()->ProfileCopy(
"AsdkTestProfile",
"<<Unnamed Profile>>",
"This is a test");
// Reset the newly copied profile to AutoCAD defaults.
//
acProfileManagerPtr()->ProfileReset("AsdkTestProfile");
// Make this new profile current.
//
acProfileManagerPtr()->ProfileSetCurrent("AsdkTestProfile");
// Change a value in the profile. For this example, make the
// cursor big.
//
struct resbuf rbCursorSize;
rbCursorSize. restype = RTSHORT;
rbCursorSize. resval. rint = 100;
acedSetVar("CURSORSIZE", &rbCursorSize);
// Rename the profile to a new name.
//
acProfileManagerPtr()->ProfileRename(
"AsdkTestProfile2",
"AsdkTestProfile",
"This is another test");
// Export the profile.
//
acProfileManagerPtr()->ProfileExport(
"AsdkTestProfile2",
"./AsdkTestProfile2.arg");
// Import the profile.
//
acProfileManagerPtr()->ProfileImport(
"AsdkTestProfile3",
"./AsdkTestProfile2.arg",
"This is a copy of AsdkTestProfile2"
"by Exporting/Importing",
Adesk::kTrue);
// Remove the reactor.
//
acProfileManagerPtr()->removeReactor(pProfileRector);
}
Часть 5. Взаимодействие с Другими Средами
Главa , ActiveX Автоматизация и Менеджер свойств объекта
Объектная модель программных компонентов Microsoft (COM) позволяет приложениям на платформе Windows связываться и обмениваться данными друг с другом.
Вы можете обращаться к интерфейсам COM, обеспеченным другими ObjectARX-приложениями или любым приложением COM-enabled, выполняющимся на Windows.
Дополнительно, используя COM с ObjectARX, Вы можете увеличивать ActiveX модель Автоматизации AutoCAD. Элементы, объекты, или примитивы, которые Вы выставляете, будут тогда доступны другим средам программирования типа Visual Basic для Приложений (VBA) и к особенностям AutoCAD типа Менеджера Свойств объекта (OPM).
§ Краткий обзор
§ Использование Объектов COM AutoCAD от ObjectARX и Других Сред
§ AutoCAD ActiveX Выполнение Автоматизации
§ Взаимодействующий с AutoCAD
§ Документ Блокировка
§ Создание Файла Системного реестра
§ Демонстрация Функциональных возможностей Автоматизации
§ Менеджер Свойства объекта API
§ Статические OPM Интерфейсы COM
§ Реализация Статические Интерфейсы OPM
§ Динамические Свойства и OPM
Краткий обзор
Объектная модель программных компонентов Microsoft (COM) была первоначально разработана, чтобы поддержать связь и внедрение объектов (OLE); это также стало основанием ActiveX Автоматизации. Как стандарт на стадии становления для развития компонента Windows, COM имеет уместность вне OLE и ActiveX. Составляющая архитектура отделяет интерфейс от выполнения, позволяя приложения состоять из динамически связанных компонентов скорее чем отдельная двоичная выполнимая программа.
Разработчики могут записывать программы, которые воспользуются преимуществом существующих компонентов COM, или они могут использовать COM, чтобы создать их собственные компоненты.
ObjectARX-приложения могут быть разработаны как клиенты COM. Например, ObjectARX-приложение, которое должно связаться с другой программой, могло осуществлять COM, обращаются к той программе. В зависимости от интерфейсов COM, которые другое приложение обеспечивает, ObjectARX-приложение могло тогда обменивать информацию с прикладным обеспечением или даже драйвером.
ObjectARX-приложение может также действовать как сервер автоматизации. Вы можете записывать обертки COM, чтобы выставить дополнительные элементы или заказные объекты ObjectARX. Новые API, шаблоны, классы, и поддержка для Microsoft Активная Библиотека Шаблонов (ATL) делают это проще чем когда-либо, чтобы добавить к AutoCAD ActiveX модель Автоматизации.
Использование Объектов COM AutoCAD от ObjectARX и Других Сред
AutoCAD обеспечивает обертки COM для большинства ObjectARX среды.
Эти объекты - ActiveX послушная Автоматизация, который поддерживает Visual Basic, Java, C++, и любую другую среду Windows, которая может обращаться к объектам ActiveX. Также, AutoCAD обеспечил некоторые API, которые являются доступными ТОЛЬКО через механизм интерфейса COM. См. ActiveX и Руководство VBA Разработчика для документации, касающейся ActiveX Объектной Модели.
Следующие особенности AutoCAD обеспечивают аспекты их API как интерфейсы COM:
§ Твердая копия
§ Меню
§ Опции
Доступ к интерфейсам COM от ObjectARX
Некоторые API только доступны как ActiveX, так, чтобы обратиться к ним от ObjectARX, Вы должны использовать COM от C++. Эта секция объясняет эти два метода, которые Вы можете использовать, чтобы делать так. Первый должен использовать MFC, и Visual C++ ClassWizard, чтобы читать AutoCAD напечатает библиотеку. Эта библиотека типов (acad. tlb) содержит ActiveX Объектную модель. Второй метод требует немного большего количества работы, но не требует использования MFC.
Использование MFC и ClassWizard, чтобы Обратиться К AutoCAD ActiveX Автоматизация
Этот метод использует MFC, и Visual C++ ClassWizard, чтобы читать AutoCAD напечатает библиотеку (acad. tlb).
Вызов ActiveX Автоматизацию связывает с помощью интерфейса использование MFC и систему Импорта Библиотеки Типа ClassWizard
1 типовая программа будет использовать COM ActiveX интерфейсы Автоматизации AutoCAD, чтобы создать круг в пространстве модели. В Visual C++ создают новый MFC AppWizard (dll) проект по имени AsdkComMfcDocSamp.
2 Выбирают Регулярный DLL использование общедоступного MFC DLL.
ПРИМЕЧАНИЕ Вы можете фактически выбирать любую из опций, но различных назначений и кода, будет требовано в зависимости от вашего выбора. Этот пример будет использовать Регулярный DLL использование общедоступного MFC DLL. См. главу 8, “MFC Темы”, для подробной информации относительно опций, чтобы выбрать для различных задач.
3 Выберите Finish и затем Ok для создания проекта.
4 Добавляют соответствующие значения к проектным назначениям, чтобы делать проектную компоновку как программа ObjectARX. Эта программа должна связаться со следующими библиотеками:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |


