![]() |
|
|
![]()
|
|
| zzzenia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 6.2.2009 Репутация: нет Всего: нет |
Здравствуйте!
Я создаю окно, в нем 2 слайдера и перемещается некоторое количество точек. Окно постоянно перерисовывается по таймеру (Invalidate(TRUE)). Сперва все отображается корректно, но после определенного количества отрисовок пропадают оба слайдера и точки из цветных становятся черно-белыми... :( Не могу понять, почему... Код функции: void MainDialog::OnPaint() { PAINTSTRUCT ps; CDC* pDC = BeginPaint(&ps); m_objects = *m_context.getObjects(); for (objMap::iterator i = m_objects.begin(); i != m_objects.end(); ++i) { if (i->second->getInterface(I_BUS) == 0) { HPEN hPen = CreatePen (PS_SOLID, 3, RGB(255,0,0) ); pDC->SelectObject(hPen); } else { HPEN hPen = CreatePen (PS_SOLID, 3, RGB(0,200,0) ); pDC->SelectObject(hPen); } Point2d p = i->second->getPos(); pDC->Ellipse(INIT_X + p.x - 5 , INIT_Y + p.y - 5, INIT_X + p.x + 5, INIT_Y + p.y + 5); } EndPaint(&ps); Спасибо! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Ты постоянно создаешь перья, но никогда их не удаляешь. Вот и кончаются у тебя GDI-ресурсы.
Правильно так: 1) создал перо и выбрал в контекст 2) нарисовал 3) востановил старое перо 4) удалил перо Судя по коду, тебе всего-то 2 пера разных нужны. Создай их один раз и запомни в переменных класса, где-нибудь в конструкторе. И рисуй на здоровье. А в деструкторе класса разрушь. Но при этом убирать перо их контектса все равно надо, в конце рисования. Есть 2 обешепринятых способа: 1) при установке пера запоминаешь, что там было установлено до тебя (SelectObject возвращает), а после завершения риования восстанавливаешь старое перо 2) просто устанавливаешь одино из предопределенных перьев функцией SelectStockObject. В твоем случае удобнее второй способ, т.к. ты постоянно меняешь перья в цикле -------------------- ... |
|||
|
||||
| zzzenia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 6.2.2009 Репутация: нет Всего: нет |
Спасибо огромное, все работает
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |