Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2011, 02:22   #1
MasterSporta
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 56
По умолчанию Обработка оконных сообщенией

Здравствуйте!
Возникла небольшая проблемка. В общем, есть у меня класс Figure, у него две открытые функции: SetPosition(POINT) и drawFigure(HDC). Делаю следующим образом:
Код:
case WM_CREATE:
        point.x = 100;
        point.y = 100;
        figure->SetPosition(point);
        return 0;

case WM_PAINT:
       .....
       figure->drawFigure(hdc);
       .....
Но в итоге ничего не рисует. Рисование выполняется только тогда, когда и точку point определяю в WM_PAINT. В чем может быть дело?
Заранее большое спасибо!!!
MasterSporta вне форума Ответить с цитированием
Старый 23.11.2011, 12:04   #2
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Где объявлен объект типа figure?
zotox вне форума Ответить с цитированием
Старый 23.11.2011, 13:07   #3
MasterSporta
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 56
По умолчанию

figure объявлен в оконной процедуре перед непосредственнои обработкой сообщений, то есть перед switch(iMsg)
MasterSporta вне форума Ответить с цитированием
Старый 23.11.2011, 13:37   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а point тогда?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.11.2011, 14:00   #5
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Сообщение от MasterSporta Посмотреть сообщение
figure объявлен в оконной процедуре перед непосредственнои обработкой сообщений, то есть перед switch(iMsg)
Если под figure отводится память (figure = new Figure)(именно перед switch(iMsg)) то отводите память один раз (к примеру в событии WM_CREATE, или в int main()) и сделайте объект figure глобальным.
zotox вне форума Ответить с цитированием
Старый 23.11.2011, 20:57   #6
MasterSporta
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 56
По умолчанию

сделал объект глобальным - все заработало.
Спасибо!!
P.S. Я так понял локально их нельзя объявлять в принципе??
MasterSporta вне форума Ответить с цитированием
Старый 24.11.2011, 12:49   #7
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
Я так понял локально их нельзя объявлять в принципе??
Можно, используйте static.
zotox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Vusual Studio 2008: Проблема в дизайнере оконных приложений, C# Arnezami Общие вопросы .NET 5 28.02.2010 17:18
Создание оконных приложений на Си Blade Общие вопросы C/C++ 13 06.02.2009 23:57
Литература по созданию оконных приложений TIN Общие вопросы C/C++ 15 30.12.2008 12:52
С++ литература по созданию оконных приложений TIN Помощь студентам 1 07.12.2008 18:52
литература по созданию оконных приложений Rio309 Общие вопросы C/C++ 0 18.11.2008 20:03