Опрос
Что такое, по вашему мнению, «демократия»?
Инициализация и деинициализация
| Индекс материала |
|---|
| Инициализация и деинициализация |
| Страница 2 |
| Страница 3 |
Поскольку подключаемый модуль является динамически связываемой библиотекой. он должен обладать точкой входа и точкой выхода. Так именуют функции, которые вызываются при первой загрузке модуля (функция входа) и его окончательной выгрузке (функция выхода), соответственно. Под Windows данные процессы обычно обрабатываются функцией DllMain, написанной самим программистом.
В модуле helloWorld эти точки входа и выхода были добавлены автоматически, посредством макроопределения DeclareSimpleCommand. Оно служит для автоматического создания команд и генерирует для вас функции инициализации и деинициализации. Рассмотрим теперь процессы инициализации и деинициализации модуля более внимательно. В этом примере создается команда tielloWorld2, которая, как и прежде, всего лишь выводит на экран текст Hello Wo "Id.
Полный исходный код приведен ниже. Модуль: HelloWorldl Файл: HelloWorld2.cpp include include include class HelloWorld2Cmd : public MPxCommand public: virtual MStatus dolt ( const MArgl_ist& ) { MGlobal: :displaylnfo( "Hello World " ); return MS: :kSuccess; } static void *creator() { return new HelloWorld2Cmd; } MStatus initializePlugin( MObject obj ) MFnPlugin pluginFn( obj, "David Gould", "1.0" ); MStatus stat; stat = pluginFn. registerCommand( "helloWorld2", HelloWorld2Cmd: : creator ); if ( Istat ) stat.
perrorC "registerCommand failed"); // "аварийное завершение registerCommandreturn stat; MStatus uninitializePlugin( MObject obj ) MFnPlugin pluginFn( obj ); MStatus stat; stat = pluginFn. deregisterCommand( "helloWorld2" ); if ( Istat ) stat. perrorC "deregisterCommand failed" ); return stat; Первый фрагмент кода попросту создает команду helloWorld2. Этот раздел книги посвящен лишь некоторым основам создания команд. В разделе 4.4 данный вопрос рассматривается намного подробнее.
Класс команды содержит простую функцию dolt(), которая вызывается при выполнении команды. Как и прежде, команда всего лишь выводит в строку Command Feedback фразу Hello World. virtual MStatusdoIt ( const MArgList& ) { MGlobal;:displaylnfo( "Hello World " ); return MS::kSuccess; } Команда также содержит статическую функцию creator(), которая размещает в памяти и возвращает объект команды.
Поиск
В закладку
Авторизация
Погода


