Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переключение вида к CSplitterWnd 
:(
    Опции темы
nikitos1980
Дата 6.9.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Пыта.сь реализовать переключение между видом, производным от CFormView к разделенному окну CSplitterWnd (имитация слияния разделенного окна). Сложность в том, что в окне-рамке я сздаю разделенное по горизонтали окно, а в верхнюю часть пытаюсь добавить 2 экземпляра вида:
Код

// MainFrame.cpp
// CSplitterMain m_wndSplitter; 
// CSplitterMain - класс, производный от CSplitterWnd, в котором создана функция-метод AddView для 
// хранения указателей на экземпляры вида для их сокрытия и отображения
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    m_wndSplitter.CreateStatic(this, 2, 1);
    m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CReportView), CSize(500, 100), pContext);
    m_wndSplitter.AddView(RUNTIME_CLASS(CAutoView), CSize(500, 100), pContext);
    m_wndSplitter.AddView(RUNTIME_CLASS(CSplitterTopDummy), CSize(500, 100), pContext);
    m_wndSplitter.SetRowInfo(0, 300, 10);
    return TRUE;
}

Переключение работает, если я добавляю с помощью AddView укзаатели на классы-вид, не производные от CSPlitterWnd. То есть, насколько я понимаю, чтобы отобразить CSplitterWnd, необходимо вызвать его метод CreateStatic, и причем из класса, производного от CFrameWnd.
Так как же можно решить данную проблему, как прорисовать CSplitterWnd в окне-вид и есть ли альтернатива решения "сворачивания" разделенного окна?
PM MAIL WWW   Вверх
Earnest
Дата 7.9.2009, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Честно говоря, ничего не поняла. Вроде ты создаешь статический сплиттер с 2 панелями. Это предполагает, что дальше ты создашь 2 вида в этих панелях с помощью CreateStatic. Но ты создаешь только один. Что за AddView? Что он делать должен?
Ты бы задачу свою описал, вместо того, чтобы описывать проблемы, возникающие в твоих велосипедах...
Если ты хочешь в одной из панелей создать еще один сплиттер, так и скажи.


--------------------
...
PM   Вверх
nikitos1980
Дата 7.9.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Решил сам задачу. 
Прорисовал все сплиттры в вызове CMainFrame::OnCreateClient вместо прорисовки непосредственно в классах вида и храню указатели на "переключаемые" классы вид. Далее скрываю и отображаю нужные классы вида.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.