WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Undo Redo

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Undo Redo
Lexus опубликован 02-07-2001 09:13 MSK   Click Here to See the Profile for Lexus   Click Here to Email Lexus  
Господа мастера Visual С++!!
Кто может помочь вот в какой проблеме: необходимо сделать "откатку" для работы с графическими объектами.
Например: изменил цвет, м/о вернуться к предыдущему причем не на один шаг.
Буду признателен и благодарен за любой совет (а лучше исходник :-)) или адресок!!
OlegN опубликован 03-07-2001 16:56 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
Задача непростая, но ориентировочно можно реализовать вот так :
Класс документа содержит как минимум два списка (динамиских массива).
Первый - массив граф объектов, пронаследованных от базового граф объекта
с набором виртуальных методов. Как минимум
каждый граф объект должен уметь себя обрисовать, а также сохранить/считать данные
из потока/ в поток (поддержка сериализации),
также каждый объект должен иметь уникальный идентификатор DWORD, по которому можна также определить тип (имя) граф. обекта (можно использовать старший BYTE или WORD)

Второй массив сожержит объекты, которые содержат данные, определяющие действие пользователя над граф. объектом
создание/удаление/модификация(имя модификации). Кроме типа
действия эти объекты содержат идентификатор граф. объекта и его данные до модификации,
полученные вызовом метода serialize или операциями << >>.
Каждое изменение граф. объектов заносится во
второй массив. Если нужно сделать откат,
ты выполняешь обратное действие, если объект
создавался, то удаляешь, если удалялся, то
создаешь и инициализируешь сохраненными данными, если модифицировался, то инициализируешь данными до модификации.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.