Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.025 c
2-1124020715
Андрей Молчанов
2005-08-14 15:58
2005.09.25
Модалное окно с продолжением работы


1-1125936347
lock
2005-09-05 20:05
2005.09.25
спираль


14-1125405446
AlexG
2005-08-30 16:37
2005.09.25
Сколько стоит Delphi 6 лицензионный?


14-1125392054
Kerk
2005-08-30 12:54
2005.09.25
ПРАВОСЛАВНАЯ ПОИСКОВАЯ СИСТЕМА


2-1124192413
Настя
2005-08-16 15:40
2005.09.25
Запуск консольной программы с параметрами.