MFC: доступ к представлениям из мэйнфрейма

Я пытаюсь получить доступ к представлению внутри сплиттера с моего мэйнфрейма. На данный момент у меня есть это:

CWnd * pView = m_wndSplitter.GetPane (0, 0);

Однако это дает мне указатель на CWnd, а не на объект CMyViewClass.

Может кто-нибудь объяснить мне, что мне нужно сделать, чтобы получить доступ к самому объекту представления, чтобы я мог получить доступ к функциям-членам в форме pView->ViewFunction(...);

1 ответ

Решение

Просто бросьте это:

// using MFC's dynamic cast macro
CMyViewClass* pMyView = 
   DYNAMIC_DOWNCAST(CMyViewClass, m_wndSplitter.GetPane(0,0));
if ( NULL != pMyView )
   // whatever you want to do with it...

или же:

// standard C++ 
CMyViewClass* pMyView = 
   dynamic_cast<CMyViewClass*>(m_wndSplitter.GetPane(0,0));
if ( NULL != pMyView )
   // whatever you want to do with it...

Если вы знаете, что вид в панели 0,0 всегда будет иметь тип CMyViewClassтогда вы могли бы просто использовать static_cast... но я не рекомендую - нет смысла рисковать, если вы когда-нибудь измените свой макет.

Другие вопросы по тегам