Ранее я использовал CSplitterWnd
в приложении MFC, используя его CreateView
функцию. Все работало нормально, но теперь я хотел бы передать параметр конструктору моих представлений, поэтому я не могу использовать создание динамических объектов MFC (DECLARE_DYNCREATE
и IMPLEMENT_DYNCREATE
), поскольку для них требуется пустой конструктор.
После небольшого поиска в интернете я нашел пример, который выглядит так:
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CMyView), CSize(0,0), pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMyView), CSize(0,0), pContext);
m_pView0=(CMyView *)m_wndSplitter.GetPane(0,0);
m_pView1=(CMyView *)m_wndSplitter.GetPane(0,1);
Это может быть обходной путь (т. Е. Создать новую функцию в CMyView
, позволяющую мне указать, что я хочу), но это будет уродливо и подвержено ошибкам. Кто-нибудь знает, есть ли другой способ сделать это?
Редактировать: Добавление более подробной информации после ответа ЕЕ:
Ваше право на то, что метод инициализации будет работать, но это заставляет меня не забывать вызывать этот метод инициализации, но, как вы указали, я, вероятно, не буду создавать эти представления много раз, так что должно быть в порядке. Еще одна вещь, которую мне, возможно, хотелось бы, - управлять самим временем жизни представления, поэтому, опять же, это невозможно с помощью CreateView.
Спасибо