Я новичок в MFC и с помощью мастера создал приложение MFC в стиле "outlook". Я расширил CMFCShellTreetCtrl
с помощью CMyShellTreeCtrl
и имел переменные-члены данных, и все работало нормально. Теперь я хочу переместить данные в класс CDocument
. Поскольку существует несколько обращений к данным при щелчке или перечислении каждого элемента, я подумал, что создам переменную-член m_pDoc
для доступа к общедоступным переменным в CDocument
. У меня проблема, я не могу найти, где взять CDocument
, так как кажется, что он не настроен при вызове деревьев OnCreate
. То есть в OnCreate
CWnd* pWndMain = AfxGetMainWnd();
ASSERT(pWndMain);
ASSERT(pWndMain->IsKindOf(RUNTIME_CLASS(CFrameWnd)) && !pWndMain->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd))); // Not an SDI app.
m_pDoc = (CMyDoc*) ((CFrameWnd*)pWndMain)->GetActiveDocument();
возвращает NULL
в m_pDoc, и если я попытался в AfterCreate()
(который вызывается после CreateOutlookBar
), это слишком поздно, так как m_pDoc уже используется и выдает сбой.
// Create and setup "Outlook" navigation bar:
if (!CreateOutlookBar(m_wndNavigationBar, ID_VIEW_NAVIGATION, m_wndTree, m_wndCalendar, 250))
{
TRACE0("Failed to create navigation pane\n");
return -1; // fail to create
}
m_wndTree.AfterCreate();
Есть идеи?
ТИА !!