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

Вниз

Как создать окно для DirectDraw посредством WinAPI   Найти похожие ветки 

 
Zeqfreed   (2003-10-09 16:59) [0]

Помогите! Скажите как создать окно в API для использования его в DirectDraw. С теми, которые я делал DD выдаёт ошибку(не помню какую)!?


 
cyborg ©   (2003-10-09 17:04) [1]

С какими теми ты делал?
Какую ошибку и где?

Криво инициализируется директдрау.


 
Mystic ©   (2003-10-09 17:16) [2]

Приведи фрашмент своего исходника...


 
Zeqfreed   (2003-10-09 17:55) [3]

...function WindowProc (Window : HWnd; Message, WParam : Word;
        LParam : LongInt) : LongInt; stdcall;
begin
 WindowProc := 0;
 case Message of
      wm_create  : DDInit(Window,1024,768,32); //запуск DD
      wm_Destroy : begin
                   PostQuitMessage (0);
                   Exit;
                   end;
 end; // case

 WindowProc := DefWindowProc (Window, Message, WParam, LParam);
end;

begin
 with WindowClass do begin
   Style := cs_HRedraw or cs_VRedraw;
   lpfnWndProc := @WindowProc;
   cbClsExtra := 0;
   cbWndExtra := 0;
   hInstance := 0;
   hIcon := LoadIcon (0, idi_Application);
   hCursor := LoadCursor (0, idc_Arrow);
   hbrBackground := GetStockObject (White_Brush);
   lpszMenuName := "";
   lpszClassName := AppName;
 end;
 If RegisterClass (WindowClass) = 0 then
    Halt (255);
 Window := CreateWindow
    (AppName,
     "Win_Min",
     ws_OverlappedWindow,
     cw_UseDefault,
     cw_UseDefault,
     cw_UseDefault,
     cw_UseDefault,
     0,
     0,
     HInstance,
     nil);

 ShowWindow (Window, CmdShow);
 UpdateWindow (Window);

 while GetMessage (Message, 0, 0, 0) do
   begin

   TranslateMessage (Message);
   DispatchMessage (Message);
Halt (Message.wParam);
end;
end.

P.S. Это не то самое приложение(то я потерял), но что-то похожее
    Runtime Error 103 at 00403E28


 
Mystic ©   (2003-10-09 18:08) [4]

1) Не слишком ли рано Halt?
2) Делал ли Search -> FindError по адресу 00403E28 ?
3) код DDInit?
4) Без строки DDInit(Window,1024,768,32); окно создается нормально?


 
Zeqfreed   (2003-10-09 18:19) [5]

Да без DDInit окно создаётся Вот код:
procedure DDInit(DDWindow : HWND;ScreenWidth,ScreenHeight,ScreenBitDepth : Integer);
var
 HRes : HRESULT;
 ddsd : TDDSurfaceDesc2;
 ddscaps : TDDSCaps2;
begin
 DDImageSurf := nil;
 DDBackSurf := nil;
 DDPrimarySurf := nil;
 DDMain := nil;

 DirectDrawCreateEx (nil, DDMain, IDirectDraw7, nil);

 DDMain.SetCooperativeLevel(DDWindow, DDSCL_FULLSCREEN or DDSCL_EXCLUSIVE);

 DDMain.SetDisplayMode (ScreenWidth, ScreenHeight, ScreenBitDepth, 0, 0);

 ZeroMemory (@ddsd, SizeOf(ddsd));
 with ddsd do begin
      dwSize := SizeOf(ddsd);
      dwFlags := DDSD_CAPS or DDSD_BACKBUFFERCOUNT;
      ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE or DDSCAPS_FLIP or DDSCAPS_COMPLEX;
      dwBackBufferCount := 1;
 end;
 DDMain.CreateSurface(ddsd, DDPrimarySurf, nil);

 ZeroMemory (@ddscaps, SizeOf(ddscaps));
 ddscaps.dwCaps := DDSCAPS_BACKBUFFER;
 DDPrimarySurf.GetAttachedSurface(ddscaps, DDBackSurf);

 {DDImageSurf := DDLoadBitmap(FDD, imageBmp, 0, 0);

 {DDSetColorKey (DDImageSurf, RGB(0, 0, 0));
end;


 
Zeqfreed   (2003-10-09 18:21) [6]

{DDImageSurf := DDLoadBitmap(FDD, imageBmp, 0, 0);

{DDSetColorKey (DDImageSurf, RGB(0, 0, 0));

Эти строки заккоментированы


 
Zeqfreed   (2003-10-09 18:37) [7]

И ещё, когда вызываю DDInit с идентификатором стандартной формы Delphi в качестве 1-ого аргумента, всё работает хорошо!


 
Zeqfreed   (2003-10-09 18:45) [8]

Всем огромное спасибо, всй разрешилось! Просто я немного ступил:
Процедуру DDInit я здесь не полностью написал. У меня там ещё есть проверки успешности действий и запись результатов в файл. Так вот я, забыл перед тем как записывать результы в файл, вызвать процедуру BeginDebugFile(Описана мною в др. модуле) предназначенную для открытия файла.



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

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

Наверх




Память: 0.49 MB
Время: 0.053 c
1-1082638145
Бегун
2004-04-22 16:49
2004.04.11
Двигаем форму


1-1079726476
san
2004-03-19 23:01
2004.04.11
Помогите вывести формулу на экран в нормальном виде.


9-1068147963
kootel
2003-11-06 22:46
2004.04.11
Установка GLScene


1-1082465220
CraKer
2004-04-20 16:47
2004.04.11
Как заранее подгрузить jpg


3-1081722170
Lamer3
2004-04-12 02:22
2004.04.11
Запрос..... простой