Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Вниз

как обрабатывать 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.029 c
9-1117097360
Buzzz
2005-05-26 12:49
2005.09.25
Аналог TMemo в GLScene


5-1100515449
Lisii
2004-11-15 13:44
2005.09.25
Компонент наследник TGraphicsControl - вращение объёмной фигуры


14-1125306285
CHES
2005-08-29 13:04
2005.09.25
Посоветуйте хороший хостинг


6-1117564524
Purg
2005-05-31 22:35
2005.09.25
Client-Server-Client


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский