G
Gertzog
Господа!
Помогите сориентироваться в MFC и решить сабж.
Есть MFC SDI приложение, в котором надо сделать табы. Если у нас простой View, то проблем нет: делаем, как описано в статье Андрея Марковски
А вот если в приложение используется CSplitterWnd, то для меня ситуация значительно усложняется. Нужно сделать так, чтобы на каждом табе был свой сплиттер со своими видами, наследниками CView.
Т.к. подобное использование окон (табов и разделителей) альтернативно для MFC -- либо одно, либо другое, потому что они оба наследуются от CWnd и хотят в процедурах Create наследников CView.
Нужно
Нельзя, например
это даже скомпилится, но работать не будет. Ошибки рантайма.
Если пробовать их смешать, то получится абракадабра -- окно будет себя вести и так и так: одно поведение поверх другого.
Есть мысль, что можно из SDI сделать MDI приложение и у ChildFrm указать полем сплиттер. В примере
Вопрос: как подружить сплиттер и табы? Т.е. сделать приложение, в котором будут табы, на каждом из которых может быть размещён сплиттер с индивидуальными для каждого таба видами.
Заранее благодарен!
Помогите сориентироваться в MFC и решить сабж.
Есть MFC SDI приложение, в котором надо сделать табы. Если у нас простой View, то проблем нет: делаем, как описано в статье Андрея Марковски
Ссылка скрыта от гостей
А вот если в приложение используется CSplitterWnd, то для меня ситуация значительно усложняется. Нужно сделать так, чтобы на каждом табе был свой сплиттер со своими видами, наследниками CView.
Т.к. подобное использование окон (табов и разделителей) альтернативно для MFC -- либо одно, либо другое, потому что они оба наследуются от CWnd и хотят в процедурах Create наследников CView.
Нужно
Код:
int ndx = m_wndTab.InsertItem(m_wndTab.GetItemCount(),sLabel,(DWORD)pView);
Нельзя, например
Код:
int ndx = m_wndTab.InsertItem(m_wndTab.GetItemCount(),sLabel,&m_wndSplitter);
это даже скомпилится, но работать не будет. Ошибки рантайма.
Если пробовать их смешать, то получится абракадабра -- окно будет себя вести и так и так: одно поведение поверх другого.
Есть мысль, что можно из SDI сделать MDI приложение и у ChildFrm указать полем сплиттер. В примере
Ссылка скрыта от гостей
переводится SDI приложение, созданное на основе CDialog. Если приложение создано на основе CSCrollView или CHtmlView, то при тех же операциях перевода в результате получаем ошибку в objcore.cpp (assertion в функции IsKindOf). Да и вообще переводить приложение из SDI в MDI не очень хотелось бы.Вопрос: как подружить сплиттер и табы? Т.е. сделать приложение, в котором будут табы, на каждом из которых может быть размещён сплиттер с индивидуальными для каждого таба видами.
Заранее благодарен!