Командные сообщения
От: KokS  
Дата: 20.02.06 18:41
Оценка:
Исправлено форматирование текста. — SchweinDeBurg

Недавно начал изучать MFC.
Возникла следующая проблема:

В SDI проекте разделяю окно на три части с помощью CSplitterWnd. Сначала вертикально, затем правую часть горизонтально.

    |    
    |----
    |

В каждой части создаю свой "вид". Вроде все замечательно, но при попытке передать сообщения каждому представлению из меню, доходит только до одного (левого). Для остальных ClassWithard честно создает обработчики, но команды не доходят. Подскажите в чем может быть дело.

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
{
    if (!m_wndSplitter.CreateStatic(this, 1, 2))
    {
        TRACE0("Failed to CreateStaticSplitter\n");
        return FALSE;
    }

    CRect rect;
    GetClientRect(&rect);

    // Создаем главный вид
    if (!m_wndSplitter.CreateView(0, 0,
        RUNTIME_CLASS(CSFView), CSize(rect.Width()-300, rect.Height()), pContext))
    {
        TRACE0("Failed to create first pane\n");
        return FALSE;
    }

    //add the second splitter pane - which is a nested splitter with 2 rows
    if (!m_wndSplitter2.CreateStatic(
                        &m_wndSplitter,     // our parent window is the first splitter
                        2, 1,               // the new splitter is 2 rows, 1 column
                        WS_CHILD | WS_VISIBLE | WS_BORDER,  // style, WS_BORDER is needed
                        m_wndSplitter.IdFromRowCol(0, 1)
                        // new splitter is in the first row, 2nd column of first splitter
                        ))
    {
        TRACE0("Failed to create nested splitter\n");
        return FALSE;
    }

    // Создаем вид для FlexGrid
    if (!m_wndSplitter2.CreateView(0, 0,
        RUNTIME_CLASS(CFGView), CSize(300, rect.bottom - 200), pContext))
    {
        TRACE0("Failed to create second pane\n");
        return FALSE;
    }

    // Вид пока не понятно для чего
    if (!m_wndSplitter2.CreateView(1, 0,
        RUNTIME_CLASS(CSFView), CSize(300, 200), pContext))
    {
        TRACE0("Failed to create third pane\n");
        return FALSE;
    }

}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.