Тема: функции обьявляется static, а дальше....?

Здравствуйте!
При добавлении команды в Автокад для вызова ObjectArx функции визард обьявляет ее так:

static void Имярек ()
{
. . .
}

Соответственно, все вызываемые в ней функции требуются со static. Как в этом случае вызвать не static члены?
С уважением,
dangee

Re: функции обьявляется static, а дальше....?

Вопрос: а зачем вызывать не static члены класса CArxProjectApp?
Возможны несколько альтернативных вариантов:
1) объявляй свои функции вне этого класса;
2) объявляй свои функции static;
3) не пользуйся ObjectARX Wizard;

Re: функции обьявляется static, а дальше....?

Вопрос: а зачем вызывать не static члены класса CArxProjectApp?

Например, я пишу AcDbDatabase::getProjectName(). Ругается... Тут, вообще, получается цепочка static-функций: первая функция - [static], не дает вызывать другие. Вот и получается цепочка.

не пользуйся ObjectARX Wizard;

Что получается, обьявлять функции, вызываемые из Автокада как static - прихоть ObjectARX Wizard? Должны же быть у них какие-то веские основания это делать?

объявляй свои функции вне этого класса;

Это я не понял, можно примеры. Тот каркас, что выстраивает ObjectARX Wizard не обязателен???
С уважением,
dangee

Re: функции обьявляется static, а дальше....?

А не видали-ли где примерную схему-шаблон arx-приложения в инете? :)  А то все пока делаю через мастера.

Re: функции обьявляется static, а дальше....?

> Dangee
Вопрос главный: знаешь ли ты C++?

Например, я пишу AcDbDatabase::getProjectName(). Ругается... Тут, вообще, получается цепочка static-функций: первая функция — [static], не дает вызывать другие. Вот и получается цепочка.

Никакой цепочки не получается. smile

AcDbDatabase *pDb = acdbCurDwg(); // Ну или какая-то другая база
ACHAR *prj = NULL
if (pDb->getProjectName(prj) == Acad:eOk) {
//......... твой код
}

Что получается, обьявлять функции, вызываемые из Автокада как static — прихоть ObjectARX Wizard? Должны же быть у них какие-то веские основания это делать?

Это не прихоть. Там есть серьезные предпосылки, т.к. это фактически callback-функция, которая однозначно должна существовать в момент вызова. Иначе развал AutoCAD.

Тот каркас, что выстраивает ObjectARX Wizard не обязателен???

В общем-то совершенно необязателен. Он в какой-то степени упрощает жизнь. Например, при создании примера ObjectARX 200X\samples\editor\mfcsamps\progbar не использовался ObjectARX Wizard.

Re: функции обьявляется static, а дальше....?

> Александр Ривилис
Похоже, нет. :)
Я тут форуме эту запись и скопи-пастил.
Спасибо.

acdbCurDwg() - this function is deprecated and has been replaced with the global curDwg

в 2005 это еще не заменили?
С уважением,
dangee

Re: функции обьявляется static, а дальше....?

ObjectARX SDK 2009. Файл migrtion.h

#define acdbCurDwg acdbHostApplicationServices()->workingDatabase

Так что acdbCurDwg никуда пока не делась. А вот curDwg так и не появилась.

Re: функции обьявляется static, а дальше....?

Спасибо, Александр.
С уважением,
dangee
Тему можно закрывать.