|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.07.2011, 11:20 | #1 |
Регистрация: 17.02.2011
Сообщений: 3
|
Правильная перерисовка окна
Хочу понять как правильно перерисовывать окна, создал компонент - таблицу и через GDI отрисовал её, перехватив сообщение WM_PAINT. Теперь при щелчке хочу выделять нужную строку, вот тут и проблема, как правильно стереть предыдущее выделение и отрисовать текущее?
Код:
Код:
Код:
Даже если два раза напишу InvalidateRect со старым и новым значение, windows всё равно вызовет WM_PAINT один раз. Получается красиво, но делать перерисовку лишних данных думаю что всё таки неправильно. Поскажите куда копать |
07.07.2011, 12:38 | #2 |
Регистрация: 17.02.2011
Сообщений: 3
|
мерцание прекратилось изменив одну строчку кода
Код:
|
07.07.2011, 14:36 | #3 |
Регистрация: 17.02.2011
Сообщений: 3
|
Вообщем вроде как разобрался, смысл такой, посылаем два раза InvalidateRgn() со старыми координатами (которое очищает фон) и новое (рисует фон). Винда где-то в памяти помечает что данные координаты устарели и делает перерисовку только дня них, остальное не трогает, так что мерцания замечено не было, может код и не идеален. Кто знает точное решения данных проблем с радостью приму
Добавил ещё выделение строки при перемещении мыши Код примера: Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перерисовка окна при момощи InvalidateRect | assch | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 01.07.2011 19:49 |
перерисовка/обновление клиентской области окна | ImmortalAlexSan | Общие вопросы Delphi | 0 | 09.01.2011 16:19 |
Перерисовка в ShellListView | artemavd | Общие вопросы Delphi | 2 | 04.04.2010 19:18 |
Перерисовка окна | _Dmitry_ | Win Api | 3 | 30.03.2010 19:55 |
Перерисовка формы | satana | Общие вопросы Delphi | 4 | 18.09.2007 19:42 |