![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как обрабатывать wm_paint [D7, WinXP]
Ugrael © (2005-07-28 17:08:00)Народ, помогите разобраться новичку.Уперся рогом и все. НЕ ПОНИМАЮ как работает ?! Суть проблемы проста, но я что но попал в ечный цикл и никак не пойму как работает.Итак-
На форме рисую например квадрат.Рисую средствами API.
при схлопывании\обновлении\перекрытии окна рисунок затирается.
Везде написано, что надо обрабатывать сообщение wm_pain.
и все, тут у меня в голове затык.8( как ? не пойму ... и примеров что то пока не нашел. бо пример нужен для полного ...новичка.Кому не в лом либо отошлите к инфе, либо напишите как это сделать ?заранее спасибо.
alpet (2005-07-29 12:37:00) [1]после прорисовки:
ValidateRect (hWnd, nil);
msg.result := 0; // message has handled
Ugrael (2005-07-29 11:49:00) [2]заработало, но заработало ... постоянно перерисовывается вся область экрана.... может я что то не так сделал ?
я в обработке процедуры wm_paint поставил вызов своей процедуры рисования. это правильно ? или это надо как то по другому перерисовывать ? мне ж надо ( по учебникам) перерисовать только область которая была перекрыта. причем один раз....
GrayFace (2005-07-29 02:51:00) [3]А как его правильно обрабатывать в API? Дело в том, что тот hdc, который подается функции "Doesn't allow drawing". Но зачем тогда он нужен?
Leonid Troyanovsky (2005-07-28 19:33:00) [4]
> Ugrael © (28.07.05 17:08)
> ...новичка.Кому не в лом либо отошлите к инфе, либо напишите
> как это сделать ?заранее спасибо.
Чарльз Калверт "Дельфи Х: Энциклопедия пользователя".
Разнообразные примеры для разных категорий читателей!
--
Regards, LVT.
PS. Прошу не считать данное сообщение рекламой.
Чапаев (2005-07-28 18:12:00) [5]> TForm1 = class (TForm)
Это в конференции-то WinAPI? Тогда уж проще дубль-кликнуть в инспекторе объектов около OnPaint...
BiN (2005-07-28 17:47:00) [6]WMPaint (var msg: TWMPaint)
Ugrael (2005-07-28 17:36:00) [7]alpet. спасибо, вроде примерно понял что то ...
вот только после вставки этих строк не проходит компиляция.
пишет, что Invalid message parametr list на строчку
procedure WMPaint (msg: TWMPaint); message WM_PAINT;
Ugrael (2005-07-28 17:23:00) [8]а код примерно такой:
при создании формы получаю hdc формы.
в табличку заносятся координаты рисунка. и потом вызывается процедура перерисовки.
procedure redraw();
begin
beginpath(hdc);
polygon(dc,ar,4);
endpath(dc);
rgn:=pathtoregion(dc);
fillrgn(dc,rgn,brush);
end;
alpet (2005-07-28 17:21:00) [9]
type
TForm1 = class (TForm)
...
private
procedure WMPaint (msg: TWMPaint); message WM_PAINT;
end;
...
procedure TForm1.WMPaint;
begin
canvas.Rectangle (...);
end;
Ugrael (2005-07-28 17:17:00) [10]если честно я даже не знаю где вообще обрабатывать сообщения нужно. 8(
Чапаев (2005-07-28 17:13:00) [11]> и примеров что то пока не нашел. бо пример нужен для полного ...новичка.
Была такая отличная книжка Borland Pascal for Windows (издательство Диалектика). Там хоть и Win16 расписывается, но зато всё на API...
А тебе нужно в case'у, где ты обрабатываешь сообщения добавить ещё и обработку WM_PAINT. Если непонятно, кидай код.