Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Пререрисовка TCheckBox


Автор: Rennigth 10.4.2006, 18:14
Всем доброго времени суток.
Вообщем ситуация такая: у CheckBox-а я ловлю WM_PAINT и рисую в зависимости от State свои Bitmap-ы. Но WM_PAINT не приходит например при изменении Enabled или при потере фокуса, а винда все равно перерисовывает его на классический вид. В принципе почти все сообщения я перехватил на которых восстанавливается классический вид но получается все это не красиво, мигания... Вообщем гадость страшная. Понимаю что самый логичный выход это реализовать свой CheckBox, но просто даже стало интересно как правильно и безболезнено можно перерисовать стандартный Виндовый CheckBox?

Автор: Foley 10.4.2006, 22:48
Rennigth, а ты не пробовал вот так:
Код

constructor TMyControl.Create;
begin
  inherited;
  ControlStyle := ControlStyle + [csOpaque];
end;


Автор: Rrader 11.4.2006, 07:44
Цитата

как правильно и безболезнено можно перерисовать стандартный Виндовый CheckBox?

На API почти так же, как и стандартный Button smile
http://forum.vingrad.ru/index.php?showtopic=90950
Нативным способом:
http://delphiworld.narod.ru/base/change_checkbox_view.html

Автор: Rennigth 11.4.2006, 10:06
Foley, нет, проблема не в том что он мигает и не красиво отрисовывается а в том что винда перерисовывает его, но ни WM_PAINT, ни CM_INVALIDATE не приходит.

Rrader, Спасибо за ссылку на DW, компонент с некоторыми изменениями мне прекрастно подошел.

Но всеже, почему так происходит:
Цитата
винда перерисовывает его, но ни WM_PAINT, ни CM_INVALIDATE не приходит.


Автор: Rrader 12.4.2006, 06:19
Цитата

Но всеже, почему так происходит:

Думаю, что здесь WM_PAINT заменяется WM_DRAWITEM smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)