Что поменяли в LMPaint(WMPaint)?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Что поменяли в LMPaint(WMPaint)?

Сообщение Kon.pasc » 27.09.2010 13:37:26

Отрисовываю кнопки своим кодом через LMPaint (WMPaint). Решил обновиться из СВН. Теперь код в LMPaint не работает :(.
За лето что-то поменяли и теперь всегда Msg.DC=0 и Msg.PaintStruct=nil. Кроме того, приложение бесконечно крутится в LMPaint, если не вызывать его inherited - но мне он нафиг не нужен.
Я или чего-то не знаю или это новый баг? Поиск по багтрекеру ничего не дал.
Вот код и пример в аттаче:

Код: Выделить всё
procedure TNewButton.LMPaint(var Msg: TLMPaint);
var
  _s: String;
begin
  inherited; {мне это не надо, Но если убрать, то LMPaint будет вызываться в бесконечном цикле;
  в revision 24474 работало без этого}

  if (Msg.DC<>0)and(Msg.PaintStruct<>nil) then begin
    {всегда Msg.DC=0 и Msg.PaintStruct=nil}
    {never go here in because Msg.DC=0 and Msg.PaintStruct=nil ALWAYS!}
    _s:='AAAAAAA';
    DrawText(Msg.DC, PChar(_s), Length(_s), Msg.PaintStruct^.rcPaint, DT_CENTER or DT_VCENTER or DT_END_ELLIPSIS);
  end;
  Msg.Result:=0;
end;
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38

Re: Что поменяли в LMPaint(WMPaint)?

Сообщение Odyssey » 27.09.2010 23:33:29

Имхо, забросить бы это в багтрекер. Похожий баг когда-то давно был с виджетсетом QT, так что прецедент есть.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Что поменяли в LMPaint(WMPaint)?

Сообщение Timid » 28.09.2010 07:50:48

А почему вы не вешаетесь на "обычный" обработчик отрисовки? Или кнопка такого не предоставляет?
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Что поменяли в LMPaint(WMPaint)?

Сообщение Kon.pasc » 28.09.2010 10:51:04

Timid писал(а):А почему вы не вешаетесь на "обычный" обработчик отрисовки?

Сейчас посмотрел - TButton и TCustomButton не имеют ни событий OnDraw ни методов отрисовки которые можно было бы переопределить.

Odyssey писал(а):Имхо, забросить бы это в багтрекер

Пойду заброшу. В ревизии 24474 всё работало.
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 25

Рейтинг@Mail.ru