Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

Помогите разобратся c HDC...   Найти похожие ветки 

 
maker ©   (2002-12-02 21:28) [0]

Здрасте,
Есть окошко(winapi) на котором необходимо отрисовывать фон обрабатывая событие WM_PAINT, для скорости отрисовки я использую BitBlt. Подскажите как правильно работать с HDC?
Почему неработает код:

...
case Message of
$0001: //WM_CREATE
begin
for a:=0 to 200 do
for b:=0 to 200 do
SetPixel(bg,a,bc,rgb(a,0,b));
end;
$000F: //WM_PAINT
begin
dc := BeginPaint (windowHWND, ps);
try
//Отрисовка фона...
BitBlt(dc,0,0,200,200,bg,0,0,SRCCOPY);
finally
EndPaint (windowHWND, ps);
end;
end;
...


 
Феу ©   (2002-12-02 21:40) [1]

Я так понял, bg : hDC. А он создается? В WM_CREATE должно быть что-то вроде
dummy:=GetWindowDC;
bg:=CreateCompatibleDC(dummy);
ReleaseDC(dummy);
и, соответственно, DeleteDC в WM_DESTROY


 
apay ©   (2002-12-03 00:44) [2]

> Феу
еще кое-что забыл :)

WM_CREATE: begin
dummy := GetWindowDC( windowHWND );
bg:=CreateCompatibleDC( dummy );
ReleaseDC( windowHWND , dummy );
hBmpBg := CreateCompatibleBitmap( bg, 201, 201 );
hOldBmp := SelectObject( bg, hBmpBg );
...// работа с bg
end;
...
WM_DESTROY: begin
SelectObject( bg, hOldBmp );
DeleteObject( hBmpBg );
DeleteDC( bg );
end;


> maker
gjxtve-бы не сделать uses Messages и не использовать WM_-константы?


 
Игорь Шевченко ©   (2002-12-03 10:05) [3]


> Есть окошко(winapi) на котором необходимо отрисовывать фон
> обрабатывая событие WM_PAINT


WM_ERASEBKGND спасет отца русской демократии


 
Diamond Cat ©   (2002-12-04 02:56) [4]

а каким боком WM_ERASEBKGND должно спасти отца русской демократии, можно подробнее


 
MBo ©   (2002-12-04 06:26) [5]

>Diamond Cat
Насколько я понимаю, обработчик WM_ERASEBKGND по умолчанию заливает клиентскую область кистью. Вот вместо этого можно свой рисунок BitBlt


 
Игорь Шевченко ©   (2002-12-04 09:03) [6]

Diamond Cat © (04.12.02 02:56)

WM_ERASEBKGND посылается окну для того, чтобы окно нарисовало свой фон. Если окно не обрабатывает это сообщение, то оно в DefWindowProc закрашивается кистью, указанной при регистрации класса в параметре hbrBackground. Если окно обрабатывает это сообщение, то оно может нарисовать любой фон, какой ему вздумается и вернуть 0 в ответ на сообщение. Посылается это сообщение из функции BeginPaint (в основном).
Кстати, если ничего не рисовать в обработчике этого сообщения, а просто вернуть 0, то окно получится прозрачным (правда, это будет неправильная прозрачность...)

С уважением,



Страницы: 1 вся ветка

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-62601
+++TAW+++
2003-01-09 09:34
2003.01.20
Последовательность в Memo


4-62890
Разведчик
2002-12-01 23:51
2003.01.20
Работа с SysListView32?


4-62911
krammer
2002-12-03 20:03
2003.01.20
Как узнать размер экрана (разрешение) и длину видео-файла?


1-62611
bambina
2003-01-09 12:39
2003.01.20
prosto HELP!!!!!!!!!!!!!!!


14-62825
John
2002-12-29 19:47
2003.01.20
Компиляция из