MFC: доступ к представлениям из мэйнфрейма - PullRequest
0 голосов
/ 06 ноября 2008

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

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

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

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

1 Ответ

3 голосов
/ 06 ноября 2008

Просто разыграйте:

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

...