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