![]() |
|
|
![]()
|
|
| voov |
|
||||||||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
MDI приложение, сплиттер. Правый вид переключается между следующими видами
Само переключение делаю так
Запускаю приложение и переключаюсь туда-сюда. Несколько переключений происходит нормально. На n-ом переключении вылетает на асерте в одном из этих видов
при этом в аутпуте пишутся такие варнинги
В чем может быть дело? |
||||||||
|
|||||||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
заметил, что переключаться можно сколь угодно долго, если вид не делать активным. Если клацнуть по виду (сделать его активным), то следующее переключение выбрасывает ассерт.
видимо, чтото неправильно сделал или чегото недоделал в переключении... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А зачем ты их удаляешь-то? Создай один раз и просто показывай\прячь...
Ну, понятно, что объекты самому как-то менеджить придется, но не велика беда - посмотри в код сплиттера, там не так много, разберешься. Определи свой класс-наследник. -------------------- ... |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
А стандартным классом никак нельзя обойтись? Может подругому создавать нужно?
|
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
хорошо. буду наследоваться от сплиттера. в каком направлении двигаться?
насоздавать объектов видов нужных классов, прятать и показывать их не проблема. мне непонятно как прицепить все эти виды в нужную ячейку сплиттера (стандартный сплиттер не дает прицепить больше 1го вида) может туда фрейм вставить, а в фрейм все виды? Это сообщение отредактировал(а) voov - 24.7.2008, 11:00 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Конечно, придется поизвращаться. Там вся фишка в том, что виды в сплиттере - это просто его чайлды, а доступается он к ним по их ид-ру, который получается из row\col. Т.е., чтобы создать еще один вид, нужно у старого поменять ид-р - на любой другой.
Но это жуть как криво. Лучше действительно создать промежуточное окно (только не фрейм, просто наследник CWnd), и создать там все эти виды. Это окно будет нормальной панелью сплиттера, а переключение видов нужно повесить на него. Представь, что в панели сплиттера у тебя tab-control. Кстати, может действительно tab сделать? Или тебе принципиально, что юзер сам не мог переключить вид, а они показывалиь автоматом? -------------------- ... |
|||
|
||||
| voov |
|
||||||||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Была сразу мысль переопределить метод получения ид из row\col, токо ж он не виртуальный Ну вобщем сделал. Сплиттер не переопределял. Унаследовался от окна, засунул туда виды. И показываю нужный. Вот код кому интересно.
Создаю в фрейме так
|
||||||||
|
|||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |