Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СSplitter в MDI документе 
:(
    Опции темы
The Thing
Дата 24.1.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 286
Регистрация: 6.9.2004

Репутация: 1
Всего: 3



Привет, имеется MDI документ.
Во фрейме хочу расположить несколько видов.
Делаю так
Код

BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    #define COUNT_GRAPH    5
    if( !m_wndSplit.CreateStatic( this, COUNT_GRAPH, 1) )
        return FALSE;


    CRect rc; GetClientRect(&rc);
    CSize szView(rc.Width(), rc.Height()/COUNT_GRAPH);

    if( !m_wndSplit.CreateView(0, 0,
            pContext->m_pNewViewClass,
            szView, 0 ) )
            return FALSE;

    for(INT i(1); i<COUNT_GRAPH; ++i )
    {
        if( !m_wndSplit.CreateView(i, 0,
            //pContext->m_pNewViewClass,
            RUNTIME_CLASS( CBoardView ),
            szView, 0 ) )
            return FALSE;
    }

    SetActiveView((CView*)m_wndSplit.GetPane(0,0));

    return TRUE;//CMDIChildWnd::OnCreateClient(lpcs, pContext);
}


В результате в CBoardView при отрисовке не проходит проверку GetDocument()  ...в методе m_pDocument->IsKindOf() проверка
ASSERT( this != NULL) не проходит :(
Код

void CBoardView::OnDraw(CDC* pDC)
{
    CGraphersDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;
...
}


Да, попутный вопрос. При создание видов для сплиттера обязательно указывать pContext->m_pNewViewClass или можно только RUNTIME_CLASS( CBoardView ). Т.е. наверное требуется поянение к pContext->m_pNewViewClass, что же он хранит. Как я опонял указатель на уже созданный объект.
Код

for(INT i(0); i<COUNT_GRAPH; ++i )
    {
        if( !m_wndSplit.CreateView(i, 0,
            //pContext->m_pNewViewClass,
            RUNTIME_CLASS( CBoardView ),
            szView, 0 ) )
            return FALSE;
    }


И второй вопрос, правильно ли я понял в pContext->m_pNewViewClass хранится указатель на УЖЕ СОЗДАННЫЙ вид, или тут хранится его описание( если я правильно понял RUNTIME_CLASS хранить описание класса ) и для создания можно использовать только  pContext->m_pNewViewClass. И тогда код будет выглядеть вот так:
Код

for(INT i(0); i<COUNT_GRAPH; ++i )
    {
        if( !m_wndSplit.CreateView(i, 0,
            pContext->m_pNewViewClass,
            //RUNTIME_CLASS( CBoardView ),
            szView, 0 ) )
            return FALSE;
    }


Заранее спасибо!

Это сообщение отредактировал(а) The Thing - 24.1.2008, 12:06


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Earnest
Дата 24.1.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



В CreateView передавай последним параметром pContext, а не 0.
Чтобы понять, что есть что, сходи отладчиком в MFC-код. 


--------------------
...
PM   Вверх
The Thing
Дата 24.1.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 286
Регистрация: 6.9.2004

Репутация: 1
Всего: 3



куда именно? ходил.
В создание ран-тайм класса
что ли?

Да, спасибо за помощь smile))
Ступил smile

Это сообщение отредактировал(а) The Thing - 24.1.2008, 13:12


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Earnest
Дата 24.1.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(The Thing @  24.1.2008,  14:10 Найти цитируемый пост)
куда именно? ходил.

Видимо, ходил, но не смотрел. Ходи всюду, где чего-то не понимаешь.



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.