Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > View состоящий из одной ActiveX компоненты


Автор: Nuzur 5.9.2006, 12:47

Доброго времени суток.
Сабж. У меня есть компонента типа диаграммы TeeChart нужно что бы View из нее родной только и состоял. Тоесть пользователь открывает View а там диаграмма и все.

Автор: Dart 6.9.2006, 11:17
Создай его как child и всё.
Только лучше пользоваться CScrollView, если хочешь, чтобы был скроллинг корректный
И пробеги по сообщениям, наверняка тебе OnDraw и иже с ними будут не нужны.
И в OnSize и OnMove надо засунуть принудительное изменение размеров и положения окна примерно так:
Код

CRect rect;
GetClientRect(rect);
m_Control->MoveWindow(rect);

Автор: Nuzur 6.9.2006, 14:54

Цитата

Создай его как child и всё 


Можно поподробнее.

Автор: Dart 10.9.2006, 20:27
Суть в чем:
Создаешь вид без документа:
Код

    CCreateContext Context;
    Context.m_pCurrentDoc     = NULL;
    Context.m_pCurrentFrame   = NULL;
    Context.m_pLastView       = NULL;
    Context.m_pNewDocTemplate = NULL;
    Context.m_pNewViewClass   = RUNTIME_CLASS(CYourView);
    CRuntimeClass *pruntime_class = RUNTIME_CLASS(CMDIChildWnd);
    CMDIChildWnd *pdoc_param_frame = (CMDIChildWnd*) pruntime_class->CreateObject();
    if (!pdoc_param_frame)
        return NULL;
    if (pdoc_param_frame->LoadFrame(nIDResource, WS_CHILD | WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, 
        NULL, &Context))
    {
        pdoc_param_frame->InitialUpdateFrame(NULL, TRUE);
        return pdoc_param_frame;
    }

В OnInitialUpdate вида создаешь что хошь (ActiveX, например)
В OnActivateFrame вида рекомендую прописать SetTitle, чтобы твой вид был поименован.

Ну, или 2-й вариант - честно сгенери визардом CView с ActiveX поддержкой.
Размести на виде свой контейнер и пользуйся. (Только это гораздо муторнее)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)