Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.041 c
3-1091563127
Жека
2004-08-03 23:58
2004.08.29
Вопрос по Access


4-1089826456
archer
2004-07-14 21:34
2004.08.29
Имена файлов в UNICODE


14-1092240062
TUser
2004-08-11 20:01
2004.08.29
Спамеры они или нет?


14-1092223767
Vlad Oshin
2004-08-11 15:29
2004.08.29
Куда бы деть ~200 пустых полторашек, из-под пива/лимонада


1-1092656409
Alek
2004-08-16 15:40
2004.08.29
ПРограммы для КПК





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский