Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Заливаю (FillRect) кистями (CreateSolidBrush), не пойму где ошибка :(

47K
27 марта 2009 года
lol-flush
2 / / 27.03.2009
Отрисовка идет по WM_PAINT, весь код выкладывать наверно нет смысла, идея такая:

получаю дескриптор DC:
dc=BeginPaint(hWnd, &Paint)
получаю pазмеpы клиентской области окна:
GetClientRect(hWnd, &Rect)
создаю кисть нужного цвета, цвет берется из переменной:
br=CreateSolidBrush(переменная)
устанавливаю кисть на DC:
SelectObject(dc, br)
заливаю прямоугольник всей клиентской области:
FillRect(dc, &Rect, br)
Удаляю кисть:
DeleteObject(br)
завершается отрисовка:
EndPaint(hwnd, &Paint)

А теперь проблема: отрисовать удается только один раз, если при следующем событии меняется цвет кисти, то клиентская область не изменяет цвет, а если между перерисовками увеличивается размер окна, то новым цветом заливается только та часть, которая не была залита первым цветом (при первой отрисовке).

Подскажите, где мой косяк?
397
27 марта 2009 года
SergPas
527 / / 03.02.2007
А при наступлении "следующего события" случайно не забываете принудительно вызвать прорисовку окна функцией InvalidateRect()?
47K
28 марта 2009 года
lol-flush
2 / / 27.03.2009
Цитата: SergPas
А при наступлении "следующего события" случайно не забываете принудительно вызвать прорисовку окна функцией InvalidateRect()?



Да, это помогло, большое спасибо! :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог