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
... но я не рекомендую - нет смысла рисковать, если вы когда-нибудь измените свой макет.