Текущий архив: 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.46 MB
Время: 0.034 c