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

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

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

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

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


person Konrad    schedule 06.11.2008    source источник


Ответы (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...

or:

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

person Shog9    schedule 06.11.2008