Изменение представления

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 01:10
Откуда: Минск
Контактная информация:

11 сен 2004, 21:19

КАК сделать так что бы при нажатии кнопки в SDI , вместо основного Вью появлялась другое Вью ? т.е. жмём хотя бы даже в меню чего-нить и вместо списка (например) нам появляется что то другое (например) CTreeCtrl &
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

13 сен 2004, 14:33

А можно несколько пояснее? Куда жмём и где именно появляется? То ли я тупой, то ли слепой уже, никак не пойму :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 01:10
Откуда: Минск
Контактная информация:

20 сен 2004, 23:16

Romeo писал(а):А можно несколько пояснее? Куда жмём и где именно появляется? То ли я тупой, то ли слепой уже, никак не пойму :)
Нет тупой скорее я :lol: Ну да ладно. Короче вот есть обычное SDI приложение, которое построено на базе CListView . Вот тама выбираем какой нить пункт лист контрола и кликаем на него мышью. Надо чтоб этот лист контрол убрался к бабушке а вместо него(например) появилася какайнить форма другая , например на основе диалоговых окон.
Вот! Т.е. или это на SDI не сделаешь ни коим образом, или это в CDocument надо 2 представление регистрировать. ,т.е. вообще как поменять вот это представление. Или же вообще как сделать тоже самое но не на SDI ??? Заранее спасибо. :D :lol: :?:
Hup
Сообщения: 207
Зарегистрирован: 05 мар 2004, 05:31
Откуда: Владивосток
Контактная информация:

21 сен 2004, 05:25

А разве нет таких свойств. как Visible и Enabled?
Я так понял. что тебе нужно в одном окне просто нужно заранее предопределить контролы, а потом ими умело опериравать через вышеупомянутые свойства(или функции, не помню... же отвык от С++)
Усложнять - легко, упрощать - сложно
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

21 сен 2004, 11:47

Alezis, если ты настаиваешь на том что View должен именно подмениться, то, боюсь ничем помочь не могу. Т.е. опыта подобного у меня не было и потому нужно разбирать с нуля, что ставит нас на один уровень, а это неприемлемо (форум ведь сделан для того, чтобы более опытные могли делиться с менее опытными).

Единственный совет касается самой изобретённой идеологии. Если вопрос поставить так: что-то щёлкаем и открывается новое окошко с другим View - то реализавть это будет значительно проще (опять-таки, по крайней мере, я с таким сталкивался), да и логичнее, наверное, будет (уж извини, но никак не могу придумать задачу, для которой требуется именно замена View контрола).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

21 сен 2004, 11:53

А если делать не на SDI, то Hup прав. Расположи на диалоге все необходимые контролы, а потом виртуозно прячь и показывай лишь те, которые требуются по контексту. Либо создавай и разрушай необходимые контролы (CreateWindow[Ex] и DestroyWindow) - но этот способ менее приемлемый.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 01:10
Откуда: Минск
Контактная информация:

21 сен 2004, 20:15

да ты прав наверное Romeo лучше будет в отдельном окне. А с диалогами тож спасибо. Чтож попробуем по-другому.
Hup
Сообщения: 207
Зарегистрирован: 05 мар 2004, 05:31
Откуда: Владивосток
Контактная информация:

22 сен 2004, 02:53

Alezis, у меня есть примерчик собственноручного извращения... :) Правда не уверен, что именно такой тебе нужен. Могу скинуть
Усложнять - легко, упрощать - сложно
Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 01:10
Откуда: Минск
Контактная информация:

22 сен 2004, 14:23

Hup писал(а):Alezis, у меня есть примерчик собственноручного извращения... :) Правда не уверен, что именно такой тебе нужен. Могу скинуть
Если не трудно скинь на 1005@tut.by. Буду очень благодарен.
arris
Сообщения: 30
Зарегистрирован: 18 июн 2004, 11:02

28 сен 2004, 19:36

Alezis, ты если честно поднял аффигенно класную проблему! Столкнулся я с ней года два-три назад! И ты не прав - докопай до конца! Не пожалеешь!!!
Для тех кто не понял: В MFC более менее реализовано сопоставление одному представлению несколько документов, а вот наоборот довольно трудно. Т. е. у вас есть один класс документа, а под каждое другое представление свой класс. Очень удобная штука для реализации сложных приложений, где данные одни и те же, а показывать их надо по разному
К сожалению копал эту проблему давно исходники нарыть будет трудно. В MSDN есть решение этой проблемы, но ссылку тоже не помню. Что-то связанное с RUNTIME_CLASS, или где-то созвучное! Попробуй это стоит того!
Ответить