Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Вниз
Proger Найти похожие ветки
← →
Рисование на окне (2004-07-10 11:32) [0]Как вывести TBitmap на поверхность окна посредством BitBlt?
← →
DeadMeat © (2004-07-10 13:12) [1]Ты кажись тему с именем перепутал... :))
---
...Death Is Only The Begining...
← →
DeadMeat © (2004-07-10 13:29) [2]
BitBlt (ТвояФорма.Canvas.Handle,КоординатаХ,КоординатаY,ТвойБитмап.Width,ТвойБитмап.Height,ТвойБитмап.Canvas.Handle,КоординатаВ ТвоемБитмапеХ,КоординатаВТвоемБитмапеY);
---
...Death Is Only The Begining...
← →
Proger (2004-07-11 16:39) [3]2 DeadMeat ©.Я так и делал, но окно остаётся "чистым"
← →
DeadMeat © (2004-07-11 18:08) [4]А делал ты, как я понимаю в OnShow или OnCreate??
Так или иначе, покажи где и как ты это делал...
---
...Death Is Only The Begining...
← →
Proger (2004-07-14 18:25) [5]А вот и сама прога:
program Project2;
{$APPTYPE CONSOLE}
uses
Windows,
Messages,
Engine_beta1,
Graphics;
const
sClassName = "sTaskBarHandlerWindow";
var
hWnd: THandle;
WndClass: TWndClass;
Msg: TMsg;
Spr: TSprite;
Buf: TBitmap;
function WindowProc(hWnd: THandle; uMsg, wParam, lParam: Integer): Integer;
stdcall; export;
begin
Result := 0;
case uMsg of
WM_DESTROY:
begin
halt(0);
end;
WM_PAINT:
begin
Spr.Draw(Buf);
BitBlt(hWnd, 100, 100, 100, 100, Buf.canvas.handle,
0, 0, SRCCOPY);
end;
end;
Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
end;
begin
Spr := TSprite.Create;
Spr.SetParams("Data\Pads.bmp","", 0, 64, 64, clNone);
Buf := TBitmap.Create;
Buf.Width := 100;
Buf.Height := 100;
FillChar(WndClass, SizeOf(WndClass), 0);
with WndClass do begin
hInstance := SysInit.hInstance;
lpszClassName := sClassName;
lpfnWndProc := @WindowProc;
hbrBackground := GetStockObject(LTGRAY_BRUSH);
end;
RegisterClass(WndClass);
hWnd := CreateWindow(sClassName, "", WS_OVERLAPPEDWINDOW, 0, 0, 1024, 768, 0, 0, hInstance, NIL);
if hWnd = 0 then begin
MessageBox(0, "Initialisation failed", NIL, ID_OK);
Exit;
end;
ShowWindow(hWnd, SW_normal);
while GetMessage(Msg, HWnd, 0, 0) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.
← →
Красный молоток (2004-07-14 18:50) [6]А ты уверен шо Buf у тебя не пустой?
← →
DeadMeat © (2004-07-14 22:12) [7]BitBlt(hWnd, 100, 100, 100, 100, Buf.canvas.handle, 0, 0, SRCCOPY);
А вот эт чаво??
Надо GetDC и соответственно ReleaseDC
---
...Death Is Only The Begining...
← →
Proger (2004-07-15 08:26) [8]2 Красный молоток.Buf не пустой, туда движок пихает спрайт.
2 DeadMeat ©.Может небольшим куском кода объясниш?
← →
Григорьев Антон © (2004-07-15 08:34) [9]
> BitBlt(hWnd, 100, 100, 100, 100, Buf.canvas.handle,
> 0, 0, SRCCOPY);
Первый параметр должен быть дескриптором контекста устройства, а не окна. Контекст устройства при обработке WM_Paint нужно получать через BeginPaint.
И прочитайте какую-нибудь хорошую книжку - базовых знаний для таких задач у вас явно недостаточно.
← →
AlexZ (2004-07-15 23:33) [10]>>{$APPTYPE CONSOLE}
>>Как вывести TBitmap на поверхность окна посредством BitBlt?
В консоли форма???
← →
DeadMeat © (2004-07-16 01:05) [11]
.............
var MyPaint : TPaintStruct;
MyWindowHWND : HWND;
dc : HDC;
.............
dc := BeginPaint (MyWindowHWND, MyPaint);
............. (1)
EndPaint (MyWindowHWND, MyPaint);
.............
Пиши в (1) свой код, используя dc...
---
...Death Is Only The Begining...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c