Проблема со статическим разделением

#c #mfc

#c #mfc

Вопрос:

У меня следующая ошибка, когда я попытался создать статический разделитель в классе MainFrame. Ошибка C2653: ‘CMyView’: не является именем класса или пространства имен c:projectsmtmtmainfrm.cpp 200 1 MT

Я попытался добавить #include «MainFrm.h» в начало MainFrm.cpp но это приводит к другой ошибке, связанной с CMyDoc. Как я могу решить эту проблему?

     BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
{
    //calculate client size
    CRect cr;
    GetClientRect(amp;cr);

    if (!m_wndSplitter.CreateStatic(this, 1, 2))
        return FALSE;

    if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(cr.Width() / 2, cr.Height()), pContext) ||
        !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyView), CSize(cr.Width() / 2, cr.Height()), pContext))
    {
        m_wndSplitter.DestroyWindow();
        return FALSE;
    }
    return TRUE;
}
  

Ответ №1:

Вам необходимо включить заголовок, в котором вы определили CMyView, в MainFrm.cpp файл. Убедитесь, что вы не включаете MyView.h в MyDoc.h и MyDoc.h в MyView.h. Это создало бы циклическую зависимость; при необходимости используйте прямое объявление, чтобы избежать таких циклов.

Комментарии:

1. Я добавил #включить «MTCDoc.h» #включить «MTCView.h» в MainFrm.cpp и это работает.