1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Csplitterwnd, Ccustomtabctrl.Совместный юз

Тема в разделе "С и С++", создана пользователем Gertzog, 9 ноя 2007.

Статус темы:
Закрыта.
  1. Gertzog

    Gertzog Гость

    Репутация:
    0
    Господа!

    Помогите сориентироваться в MFC и решить сабж.

    Есть MFC SDI приложение, в котором надо сделать табы. Если у нас простой View, то проблем нет: делаем, как описано в статье Андрея Марковски http://www.codeproject.com/tabctrl/AMCustomTabCtrlDemo.asp

    А вот если в приложение используется 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 указать полем сплиттер. В примере http://www.firststeps.ru/mfc/steps/r.php?101 переводится SDI приложение, созданное на основе CDialog. Если приложение создано на основе CSCrollView или CHtmlView, то при тех же операциях перевода в результате получаем ошибку в objcore.cpp (assertion в функции IsKindOf). Да и вообще переводить приложение из SDI в MDI не очень хотелось бы.

    Вопрос: как подружить сплиттер и табы? Т.е. сделать приложение, в котором будут табы, на каждом из которых может быть размещён сплиттер с индивидуальными для каждого таба видами.

    Заранее благодарен!
     
  2. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
Статус темы:
Закрыта.

Поделиться этой страницей