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

Вниз

DDSCL_EXCLUSIVE   Найти похожие ветки 

 
Evgeniy_K   (2004-08-01 19:43) [0]

Почему система не хочет ставить DDSCL_EXCLUSIVE? При этом раньше работало, а щас нигде не работает, мол FFFFFF. Код уже на много раз прочесал, так и не нашел причину. Остальное все исправно работает.


 
parovoZZ ©   (2004-08-01 20:13) [1]

А в чём сие проявляется?


 
Evgeniy_K   (2004-08-01 20:18) [2]

говорит, мол "обратилося по адресу FFFFFFFF" - по исполнению SetCooperative..


 
parovoZZ ©   (2004-08-01 20:27) [3]

Код в студию


 
NikeOLD   (2004-08-02 11:40) [4]

DDSCL_EXCLUSIVE
Requests the exclusive level. This flag must be used with the DDSCL_FULLSCREEN flag.
Скоре всего забыл, что этот флаг работает только в полноэкранном режиме.


 
parovoZZ ©   (2004-08-02 12:19) [5]

Ну раз  раньше работало, то наверное не в этом дело. Хотя чем чёрт не шутит.


 
Evgeniy_K   (2004-08-03 11:12) [6]

Нет фуллскрин стоит. Тут в чем-то другом загвоздка...


 
NikeOLD   (2004-08-03 15:09) [7]


> Evgeniy_K   (03.08.04 11:12) [6]

Проблема осталась?
Тогда полный код сюда


 
Evgeniy_K   (2004-08-03 19:07) [8]

 SpyError(
    DirectDrawCreateEx(nil, GID, IDirectDraw7, nil),
 "DirectDrawCreateEx");

 if Windowed then begin

   ZeroMemory(@ddsd, SizeOf(ddsd));
   ddsd.dwSize:= SizeOf(ddsd);
   GID.GetDisplayMode(ddsd);
   ScreenBitDepth:= ddsd.ddpfPixelFormat.dwRGBBitCount;

   SpyError(
      GID.SetCooperativeLevel(WindowH, DDSCL_NORMAL), "SetCooperativeLevel");

   ZeroMemory(@ddsd, SizeOf(ddsd));
   ddsd.dwSize:= SizeOf(ddsd);
   ddsd.dwFlags:= DDSD_CAPS;
   ddsd.ddsCaps.dwCaps:= DDSCAPS_PRIMARYSURFACE;
   SpyError(
      GID.CreateSurface(ddsd, GSurface, nil), "Create GSurface");

   SpyError(
      CreateOSPSurface(BackSurface, 800, 600), "Create BackSurface");

   SpyError(
      GID.CreateClipper(0, DClipper, nil), "Set Clipper");
   SpyError(
      DClipper.SetHWnd(0, WindowH), "Set SetHWnd");
 end
 else begin

//CORRECT DDRAW.DLL EXCEPTION!!!
   SpyError(
      GID.SetCooperativeLevel(WindowH, DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN), "SetCooperativeLevel");

   SpyError(
      GID.SetDisplayMode (ScreenWidth, ScreenHeight, ScreenBitDepth, 0, 0), "SetDisplayMode");

   ZeroMemory(@ddsd, SizeOf(ddsd));
   with ddsd do begin
     dwSize:= SizeOf(ddsd);
     dwFlags:= DDSD_CAPS or DDSD_BACKBUFFERCOUNT;
     dwBackBufferCount:= 1;
     ddsCaps.dwCaps:= DDSCAPS_PRIMARYSURFACE or DDSCAPS_FLIP or DDSCAPS_COMPLEX;
   end;
   SpyError(
      GID.CreateSurface(ddsd, GSurface, nil), "Create GSurface (Primary)");

   ZeroMemory(@ddscaps, SizeOf(ddscaps));
   ddscaps.dwCaps:= DDSCAPS_BACKBUFFER;
   SpyError(
      GSurface.GetAttachedSurface(ddscaps, BackSurface), "Attached [BackSurface] Surface to [GSurface]");
 end;

Вот, если Windowed, то работает. Иначе на всех машинах экзепшен FFFFFFFF, DDRAW.DLL


 
Evgeniy_K   (2004-08-03 19:09) [9]

Если запускать не из Делфи:

Регистры:
EAX=00000000 CS=0000 EIP=00000000 EFLGS=00000000
EBX=00000000 SS=0000 ESP=00000000 EBP=00000000
ECX=00000000 DS=0000 ESI=00000000 FS=0000
EDX=00000000 ES=0000 EDI=00000000 GS=0000
Байты по адресу CS:EIP:

Содержимое стека:


Потом ошибка #216 at 0040372A



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

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

Наверх




Память: 0.48 MB
Время: 0.03 c
3-1099419559
avkar
2004-11-02 21:19
2004.12.05
Сообщения от SQL Server


9-1090574993
Megabyte-CeerCop
2004-07-23 13:29
2004.12.05
Игра готова


3-1099496320
DimonNew
2004-11-03 18:38
2004.12.05
Упорядочить по подстановочному полю


14-1100766738
Dmitriy O.
2004-11-18 11:32
2004.12.05
Удаленное администрирование своих программ.


1-1100852111
Torin
2004-11-19 11:15
2004.12.05
Чтение/запись строк в поток