(изменено: S P, 12 августа 2011г. 13:07:34)

Тема: MFC интерфейс

Можно ли создавать элементы интерфейса, например, панели, не используя MFC классы ObjrctARX, а только например стандартные MFC классы (CDockControl, CDialogBar).
Просмотрел на форуме несколько интересующих меня тем по использованию классов CAdUiDockControlBar, CAсUiDockControlBar. Создал свой класс производный от CAсUiDockControlBar, переопределил метод Create. Скомпилилось без проблем. Но при отработке кода

dockBar = new MyDockControlBar;
dockBar->Create (acedGetAcadFrame (), "MyDockBar");
dockBar->EnableDocking (CBRS_ALIGN_ANY);
dockBar->SetWindowText (_T("MyDockBar"));
acedGetAcadFrame ()->FloatControlBar(pDockDialog, CPoint (300, 200), CBRS_ALIGN_TOP);
acedGetAcadFrame ()->ShowControlBar (dockBar, TRUE, TRUE);

почему-то вываливается исключение в методе FloatControlBar вот сюда:

CObject* CRuntimeClass::CreateObject()
{
    ...

    CObject* pObject = NULL;
    TRY
    {
        pObject = (*m_pfnCreateObject)();                     // здесь возникает исключение
    }
    END_TRY

    return pObject;
}

Вроде бы на форуме раздавались некоторые примерчики правильного использования - как бы их увидеть/получить?
P.S. Windows 7 x64 + Visual Studio 2010 + ObjectARX 2012 + AutoCAD 2012

Re: MFC интерфейс

Может всё-таки:

acedGetAcadFrame ()->FloatControlBar (dockBar, CPoint (300, 200), CBRS_ALIGN_TOP);

а не

acedGetAcadFrame ()->FloatControlBar(pDockDialog, CPoint (300, 200), CBRS_ALIGN_TOP); 

:?:

Re: MFC интерфейс

Александр Ривилис пишет:

Может всё-таки:

acedGetAcadFrame ()->FloatControlBar (dockBar, CPoint (300, 200), CBRS_ALIGN_TOP);

а не

acedGetAcadFrame ()->FloatControlBar(pDockDialog, CPoint (300, 200), CBRS_ALIGN_TOP); 

Это просто описка. Скопировал из другого проекта. Просто иначе бы даже не скомпилилось

Re: MFC интерфейс

Вообщем разобрался - оказывается разработка под AutoCAD вплоть до AutoCAD 2012 должна вестись на VS2008 sp1. Забудем о VS2010

(изменено: Александр Ривилис, 12 августа 2011г. 18:05:13)

Re: MFC интерфейс

S P пишет:

Вообщем разобрался - оказывается разработка под AutoCAD вплоть до AutoCAD 2012 должна вестись на VS2008 sp1. Забудем о VS2010

Лучше расскажи как тебе удалось вообще загрузить в AutoCAD 2012 arx-приложение, собранное в VS 2010 без наличия установленного VS 2008 SP1?

Re: MFC интерфейс

Ну я, наверное, не весь функционал ObjectARX использовал. Пока я не связался с MFC Extension Classes все было нормально. Глобальные функции и COM-интерфейсы работали на ура. Были даже MFC-шные диалгоги(не ObjectARX-овые, а обычные CDialog). Единственное, что не радовало глаз - сообщение о несовместимости при загрузке arx приложений. Нажимал просто "Загрузить это приложение" и вроде все пахало. Вот так как-то.