Явно устанавливать ресурсы

1 Перед взятием любых шагов, которые вызвали бы MFC, чтобы искать ваш ресурс, вызывают функцию AFX AfxSetResourceHandle() чтобы установить заказной ресурс как системное значение по умолчанию.

2 Перед установкой системного ресурса к вашему ресурсу, вызовите AfxGetResourceHandle() чтобы получить текущий системный ресурс.

3 Немедленно после выполнения любых функций, которые требуют, заказной ресурс, системный ресурс должен быть сброшен к маркеру{*дескриптору*} ресурса, предварительно сохраненному.

Запрос функций API AutoCAD (или при вызове команд AutoCAD) внутри диалога командует обработчиком, который нуждается в ресурсах AutoCAD, типа acedGetFileD (), задерживает ресурс к AutoCAD перед запросом функций.

Восстановите ваш прикладной ресурс впоследствии. (Используйте acedGetAcadResourceInstance () чтобы получить маркер{*дескриптор*} ресурса AutoCAD.)

CAcExtensionModule Класс

ObjectARX SDK обеспечивает два простых класса C++, которые могут использоваться, чтобы делать управление ресурсами проще. CACEXTENSIONMODULE класс обслуживает две цели —, это обеспечивает метку - заполнитель для структуры AFX_EXTENSION_MODULE (обычно имел обыкновение инициализировать или заканчивать MFC расширение{*продление*} DLL) и прослеживает двух проводников{*средств доступа*} ресурса для DLL. Проводники{*средства доступа*} ресурса - модуль

Ресурсы (которые являются обычно DLL непосредственно, но могут быть установлены в некоторый другой модуль) и заданные по умолчанию ресурсы (обычно ведущее приложение, но - фактически проводник{*средство доступа*} в настоящее время активные, когда AttachInstance () вызван{*назван*}).

НЕ нашли? Не то? Что вы ищете?

CAcExtensionModule прослеживает их, чтобы упростить переключение MFC поиск ресурса между значением по умолчанию и модулем. DLL должен создать один образец этого класса и обеспечивать выполнение для класса.

CAcModuleResourceOverride Класс

Используйте образец этого класса, чтобы переключить между средствами доступа ресурса. Когда объект создан, новое средство доступа ресурса переключится в. После разрушения, первоначальное средство доступа ресурса будет восстановлено. Следующий код обеспечивает пример:

Пусто MyFunc ()

{

CAcModuleResourceOverride myResources;

}

После входа в эту функцию ресурсы модуля будут выбраны. Когда функциональные возвращения, заданные по умолчанию ресурсы будут восстановлены. Перегрузка ресурса может использоваться способом из трех путей:

§  Используют заданный по умолчанию конструктор (никакие параметры) чтобы переключить к ресурсам модуля. Заданные по умолчанию ресурсы будут восстановлены деструктором. Ресурсы модуля по умолчанию - поддерживаемые CAcExtensionModule DLL'S.

§  Передают NULL (или 0) конструктору. Ресурсы DLL'S будут выбраны и ресурсы, которые были, в действительности будет восстановлен, когда объект перегрузки разрушен.

§  Передают дескриптор не-NULL к конструктору. Ресурсы связанного модуля будут выбраны и ресурсы, которые были, в действительности будет восстановлен, когда объект перегрузки разрушен.

Имеются две макрокоманды если, названный AC_DECLARE_EXTENSION_MODULE и AC_IMPLEMENT_EXTENSION_MODULE, помогать определять и осуществляют классы в вашем приложении.

Следующий код иллюстрирует, как использовать классы CAcExtensionModule и CAcModuleResourceOverride в ObjectARX-приложении:

AC_IMPLEMENT_EXTENSION_MODULE(theArxDLL);

HINSTANCE _hdllInstance = NULL;

extern "C" int APIENTRY

DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)

{

// Remove this if you use lpReserved

UNREFERENCED_PARAMETER(lpReserved);

if (dwReason == DLL_PROCESS_ATTACH)

{

theArxDLL. AttachInstance(hInstance);

hdllInstance = hInstance;

}

else if (dwReason == DLL_PROCESS_DETACH)

{

theArxDLL. DetachInstance();

}

return 1; // ok

}

Встроенная MFC Поддержка Интерфейса пользователя

ObjectARX имеет набор MFC Интерфейса пользователя (UI) связанные классы, которые легко позволяют Вам обеспечивать непротиворечивый UI. Это означает, что ваш UI может вести себя и иметь появление{*вид*} AutoCAD UI. Строго рекомендует использовать эти классы, так как они позволяют вашему приложению быть более сильно интегрированными с AutoCAD UI. Autodesk MFC система разделен на две библиотеки. Первый вызван{*назван*} AdUi и не Определенный автохамом. Второй вызван{*назван*} AcUi и содержит Определенное автохамом появление{*вид*} и поведение.

AdUi - MFC динамически компонуемая библиотека расширения{*продления*}, имел обыкновение расширять{*продлевать*} некоторых из UI-имеющихся отношение классов MFC. Библиотека была разработана для использования с AutoCAD и другими изделиями{*программами*} Autodesk и содержит основные функциональные возможности. Библиотека компаньонов, AcUi, формирует на AdUi структуру и обеспечивает AutoCAD- определенное появление{*вид*} и поведение. AdUi и AcUi библиотеки обеспечивают классы, которые расширяют{*продлевают*} обеспеченный MFC способами, которые позволяют ARX разработчикам использовать те же самые UI функциональные возможности, найденные в AutoCAD. MFC разработчики может без швов использовать эти классы. Перечислены ниже основные области добавленных функциональных возможностей, обеспеченных AdUi и AcUi.

Чтобы использовать AdUi в приложении MFC-based, исходные файлы C++ проекта должны включить adui. h, и проект должен связать adui15.lib (adui15.dll библиотека импорта).

Чтобы использовать AcUi в MFC-ОСНОВАННОМ приложении AutoCAD, исходные файлы C++ проекта должны включить adui. h, тогда acui. h, и проект должен связать acui15.lib и adui15.lib. AutoCAD вызывает подпрограмму инициализации библиотеки, InitAcUiDLL (), который также обрабатывает AdUi инициализацию (через InitAdUiDLL () запрос); поэтому ваша прикладная потребность не повторно инициализирует AcUi или AdUi.

ПРЕДУПРЕЖДЕНИЕ! Хотя adui15.dll может быть вызван от приложений MFC-based других чем AutoCAD (или другие программы Autodesk), предназначенное использование библиотеки - Autodesk и третьими лицами явно для создания программного обеспечения, чтобы работать исключительно с AutoCAD, или другими изделиями Autodesk. Использование этого DLL для не - AutoCADа, автономные программы не разрешаются согласно лицензионному соглашению AutoCAD.

AdUi и AcUi обеспечивают классы, которые осуществляют следующие особенности:

§  изменение размеров Диалога

§  постоянство данных Диалога

§  Табулированные диалоги

§  Расширяемые табулированные диалоги

§  Контекстно-зависимая справка и справка F1

§  взаимодействие Диалога с редактором рисунка AutoCAD

§  кнопки Bitmap, которые являются удобными

§  Статические растровые кнопки

§  кнопки Bitmap, которые являются, перетащат и опустить узлы

§  кнопки точечного рисунка Стиля инструментальной панели

§  кнопки Owner-draw, которые являются удобными

§  Диалог и управление поддерживают для стандарта ToolTips

§  Диалог и управление поддерживают для TextTips (которые отображают обрезанный текст)

§  Диалог и поддержка управления для DrawTips (владелец - тянут TextTips)

§  Заказная передача сообщений, включая проверку правильности данных

§  Поля со списком, которые отображают и позволяют выбор многого AutoCAD определенные элементы

§  Состыковывающиеся окна строки управления для использования с AutoCAD

§  Определенные в AutoCAD растровые кнопки (кнопки Pick и Select)

§  Специализированные средства редактирования, которые могут исполнять Определенную AutoCAD проверку правильности данных

§  Заказная передача сообщений, включая проверку правильности данных

Иерархия Классов

Следующее - поддержанные классы в AdUi и AcUi библиотеках. Имеется подарок{*настоящее*} классов в файлах заголовка, которые не показываются и - для внутреннего использования только и не поддержаны для использования с ObjectARX.

AdUi Передача сообщений

AdUi библиотека использует внутреннюю схему передачи сообщений облегчить связь между объектами. Типично это вовлекает контейнер (типа диалога) отвечающий на уведомление от содержащегося окна (типа управления).

Расширенные приложения могут приспосабливать встроенную систему к их потребностям, или добавлять AdUi поддержку передачи сообщений к другому CWND полученные классы.

AdUi Окна подсказок

AdUi обеспечивает три типа окон совета{*предупреждения*}: ToolTips, TextTips, и DrawTips.

ToolTips представляют готовый Windows ToolTips, как предусмотрено обычным Средством управления DLL установленный на системе пользователя. TextTips - основанные на тексте окна совета, которые выскочат по управлению, обычно показать данные, которые пользователь был бы иначе должен листать в представление. DrawTips – расширение TextTips.

Управление ниже совета обычно ответствено за закрашивание содержания совета (аналогичное владельцу - тянущемуся совету).

Большинство приложений редко вовлекает эти классы непосредственно, так как AdUi обычно обрабатывает все требования. AdUi использует его внутреннюю систему передачи сообщений, чтобы вести переговоры между контейнерами и средством управления и решать когда и как отобразить совет.

CAdUiTipWindow Класс

CAdUiTipWindow - основной AdUi класс окна совета{*предупреждения*}. Эти объекты обрабатывают универсальный совет{*предупреждение*}, отображают и знают, когда автоматически скрыть себя (типа обнаружения движения курсора, краткой блокировки времени, или деятельности клавиатуры).

CAdUiTextTip Класс

CAdUiTextTip специализирует CADUITIPWINDOW, чтобы отобразить TextTip.

CAdUiDrawTipText Класс

CAdUiDrawTipText используется внутренне AdUi системой передачи сообщений, чтобы сообщить управлению, что окно совета{*предупреждения*} нуждается в перекрашивании. Управление имеет опцию изменения{*замены*} атрибутов контекста устройства окна совета{*предупреждения*} и рисунка текста.

AdUi Диалоговые классы

Диалоговые классы AdUi пригодны для использования в приложениях других чем AutoCAD.

Из за большого объема этот материал размещен на нескольких страницах:
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