![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не работает двойная буфернизация (( [D7, XP]
grigor © (2011-03-24 22:35:00)Код работал когда вместо WinAPI окна использовал диалоговое из ресурса:
var
OUT_DC: HDC;
OUT_WIDTH, OUT_HEIGHT:Integer;
BUF_DC: HDC;
BUF_BMP:HBITMAP;
function dInitialize(OutDC:HDC; Widht, Height: Integer):Integer;
begin
Result := 0; // 0 - ошибок нет
OUT_DC := OutDC;
OUT_WIDTH := Widht;
OUT_HEIGHT := Height;
BUF_DC := CreateCompatibleDC(OutDC);
if BUF_DC = 0 then
begin
Result := 1;
Exit;
end;
BUF_BMP := CreateCompatibleBitmap(OutDC, Widht, Height);
if BUF_BMP = 0 then
begin
Result := 2;
Exit;
end;
if SelectObject(OUT_DC, BUF_BMP) = 0 then
begin
Result := 3; // < --- Тут SelectObject почему-то возвращает 0 (( !!!!!!
Exit;
end;
end;
//...
var
wDC:HDC;
//...
Handle := CreateWindowEx(0, WIN_CLASS, WIN_TITLE,
WS_OVERLAPPED or WS_SYSMENU or WS_CAPTION or WS_MINIMIZEBOX,
100, 100, WIN_WIDTH, WIN_HEIGHT, 0, 0, Hinstance, nil);
wDC := GetDC(Handle);
//...
PatBlt(BUF_DC, 0, 0, OUT_WIDTH, OUT_HEIGHT, BLACKNESS);
SetPixel(BUF_DC, 10,10 ,rgb(255,0,0));
BitBlt(OUT_DC, 0, 0, OUT_WIDTH, OUT_HEIGHT, BUF_DC, 0, 0, srcCopy);
//Ничего не выводит
//...
grigor (2011-03-25 00:29:00) [1]>Для ситуаций "почему-то" есть GetLastError, отвечающая "патамушта"
Она у меня отвечает 0 )))
>не в BUF_DC надо BUF_BMP ?
ААА! Точно! На мне сказывается недосып, 5 рез проверил не заметил((
Так верно:
SelectObject(BUF_DC, BUF_BMP)
Игорь Шевченко (2011-03-25 00:25:00) [2]
> if SelectObject(OUT_DC, BUF_BMP) = 0 then
не в BUF_DC надо BUF_BMP ?
Rouse_ (2011-03-25 00:10:00) [3]
> Тут SelectObject почему-то возвращает 0
Для ситуаций "почему-то" есть GetLastError, отвечающая "патамушта"
Игорь Шевченко (2011-03-24 22:57:00) [4]
> Ничего не выводит
больно слышать