Переключение вида приложения
От: Snoop Украина  
Дата: 28.03.02 11:20
Оценка:
Доброго времени суток!

Есть SDI приложение. Нужно создать диалог который будет иметь урезанную функциональность основного приложения.
Т.е. при запуске приложения в зависимости от некотрого значения будет осуществляться загрузка или SDI варианта приложения или Dialog-based. Так же нужно осуществить переключение между ними.

В какую сторону копать чтобы подружить 2 вида приложения и сделать переключение между ними???
Я бы изменил мир — но Бог не даёт исходников...
Re: Переключение вида приложения
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 28.03.02 12:19
Оценка: 2 (1)
Здравствуйте Snoop, Вы писали:

S>Доброго времени суток!


S>Есть SDI приложение. Нужно создать диалог который будет иметь урезанную функциональность основного приложения.

S>Т.е. при запуске приложения в зависимости от некотрого значения будет осуществляться загрузка или SDI варианта приложения или Dialog-based. Так же нужно осуществить переключение между ними.

S>В какую сторону копать чтобы подружить 2 вида приложения и сделать переключение между ними???


Делай выбор в InitInstance (посмотри как она сделана для SDI и Dialog-Based)
Re[2]: Переключение вида приложения
От: Snoop Украина  
Дата: 28.03.02 13:11
Оценка:
O$>Делай выбор в InitInstance (посмотри как она сделана для SDI и Dialog-Based)

Спасибо, но это при старте. А как переключится в процессе работы?
Я бы изменил мир — но Бог не даёт исходников...
Re[3]: Переключение вида приложения
От: AlexRb  
Дата: 29.03.02 04:10
Оценка:
Здравствуйте Snoop, Вы писали:


O$>>Делай выбор в InitInstance (посмотри как она сделана для SDI и Dialog-Based)

S>Спасибо, но это при старте. А как переключится в процессе работы?


Пример из МСДН

Переключение View


void CMainFrame::OnExample(UINT nCmdID)  // Обработчик нажатия кнопок переключающих вьювы
{
    if (nCmdID == m_nCurrentExample)
        return;  // already selected

    // Set the child window ID of the active view to AFX_IDW_PANE_FIRST.
    // This is necessary so that CFrameWnd::RecalcLayout will allocate
    // this "first pane" to that portion of the frame window's client
    // area not allocated to control bars.  Set the child ID of
    // the previously active view to some other ID; we will use the
    // command ID as the child ID.
    CView* pOldActiveView = GetActiveView();
        ::SetWindowLong(pOldActiveView->m_hWnd, GWL_ID, m_nCurrentExample);

    CRuntimeClass* pNewViewClass;
    switch (nCmdID)
    {
        case ID_STRINGLIST:
            pNewViewClass = RUNTIME_CLASS(CStringListView);
            break;
        case ID_TYPEDLIST:
            pNewViewClass = RUNTIME_CLASS(CTypedPtrListView);
            break;
        case ID_INTLIST:
            pNewViewClass = RUNTIME_CLASS(CIntListView);
            break;
        default:
            ASSERT(0);
            return;
    }

    // create the new view
    CCreateContext context;
    context.m_pNewViewClass = pNewViewClass;
    context.m_pCurrentDoc = GetActiveDocument();
    CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context));
    if (pNewView != NULL)
    {
        // the new view is there, but invisible and not active...
        pNewView->ShowWindow(SW_SHOW);
        pNewView->OnInitialUpdate();
        SetActiveView(pNewView);
        RecalcLayout();
        m_nCurrentExample = nCmdID;

        // finally destroy the old view...
        pOldActiveView->DestroyWindow();
    }
}


Удачи.
Re: Переключение вида приложения
От: Игорь Вартанов Ниоткуда  
Дата: 29.03.02 16:07
Оценка: 1 (1)
Здравствуйте Snoop, Вы писали:

S>Есть SDI приложение. Нужно создать диалог который будет иметь урезанную функциональность основного приложения.

S>Т.е. при запуске приложения в зависимости от некотрого значения будет осуществляться загрузка или SDI варианта приложения или Dialog-based. Так же нужно осуществить переключение между ними.

Сложность в том, что классическое dialog-based приложение не поддерживает Document/View.
А переключаться на диалог просто — создаешь немодальный диалог, а SDI прячешь.
---
С уважением,
Игорь
Re: Переключение вида приложения
От: Xenia США  
Дата: 31.03.02 11:02
Оценка:
Здравствуйте Snoop, Вы писали:

S>Доброго времени суток!


S>Есть SDI приложение. Нужно создать диалог который будет иметь урезанную функциональность основного приложения.

S>Т.е. при запуске приложения в зависимости от некотрого значения будет осуществляться загрузка или SDI варианта приложения или Dialog-based. Так же нужно осуществить переключение между ними.

S>В какую сторону копать чтобы подружить 2 вида приложения и сделать переключение между ними???

Вот по этой ссылке лежит как раз то, что тебе нужно. Код довольно прочтой, разберешься.
www.firststeps.ru/mfc/sample/2.html Удачи!
Re[2]: Переключение вида приложения
От: Snoop Украина  
Дата: 31.03.02 18:35
Оценка:
Всем спасибо

Вопрос исчерпан. У меня в SDI приложении уже был реализован класс для переключения нескольких видов по вышеприведенной схеме.
Вот отдохнул денек и все разложилось в голове по полочкам.
Еще раз спасибо всем за ценные мысли !
Я бы изменил мир — но Бог не даёт исходников...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.