|
Модераторы: bsa |
|
LMnet |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Здравствуйте. Я сейчас изучаю MFC и при решении одной из тренировочных задач из книги у меня возник следующий вопрос: как сделать так, чтобы объект, созданный в одном обработчике, был виден из другого? Например, имеется обработчик WM_PAINT, в котором создается некий объект класса cDraw:
Пусть этот объект - это некая фигура на экране с центром в точке (0,0). И я бы хотел, чтобы эта фигура меняла свои координаты при нажатии мышью в клиентской области окна:
Метод cDraw::shift(x,y) меняет координаты объекта figure (сдвигает его). Однако, объект figure создан в другом методе и не будет виден за пределами OnPaint(). Меня интересует, каким способом можно создать объект figure в одном методе, чтобы его можно было вызывать из других? Конкретно к этому примеру не привязывайтесь, интересует сам подход. И очень не хочется использовать глобальные объекты. Решил разместить тему в общих вопросах а не в MFC, потому что вопрос актуален не только для MFC. |
||||
|
|||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
создавайте как член класса формы..
|
|||
|
||||
LMnet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Не понял, какой формы? И почему тему перенесли, я же написал, вопрос касается не только MFC, а области видимости вообще. Просто на примере MFC. |
|||
|
||||
Earnest |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: нет Всего: 183 |
Ты создаешь объект автоматический; он живет только до выхода из метода OnPaint. И в принципе не может быть виден ниоткуда. MFC здесь действительно не причем; у тебя проблемы с основами языка. Тебе надо бы сначала мат. часть подучить: какие бывают переменные, время жизни и т.д.
-------------------- ... |
|||
|
||||
LMnet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Чем отсылать к учебникам лучше бы подсказали решение проблемы. Я вообще-то в первом посте написал, что на выходе из OnPaint() объект будет разрушен. Я ищу способ, с помощью которого можно было бы создать такой объект и он бы не разрушался при выходе из обработчика. Пока что придумал только такой выход: добавить член класса типа cDraw и хранить там координаты точки центра фигуры. Но это решение не подойдет, если у меня будет создаваться неопределенное количество разнотипных объектов. |
|||
|
||||
ller |
|
|||
Опытный Профиль Группа: Участник Сообщений: 325 Регистрация: 4.8.2008 Где: г. Таганрог Репутация: 2 Всего: 4 |
Для неопределенного количества объектов есть std::vector и прочие контейнеры
|
|||
|
||||
LMnet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Все таки добавление такой информации в класс - это скорее костыль, чем решение. Однако я остановился именно на таком варианте, хотя он мне не очень-то по душе. Все равно ничего лучше придумать не смог. |
|||
|
||||
mes |
|
|||
любитель Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |