Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.04 c
14-1125670296
cyborg
2005-09-02 18:11
2005.09.25
Вы выдели чего в Новом Орлеане в США творится?


14-1125292597
boriskb
2005-08-29 09:16
2005.09.25
Кто они?


14-1123609221
rts111
2005-08-09 21:40
2005.09.25
Оцените программу


14-1125641670
Juice
2005-09-02 10:14
2005.09.25
Быть ли ХП на моем компе ?


14-1125306278
han_malign
2005-08-29 13:04
2005.09.25
VMT в MSVC++




   Наверх