Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];

Вниз

DirectX и Delphi. Мультимониторность.   Найти похожие ветки 

 
KilkennyCat   (2002-04-21 03:31) [0]

Используя DelphiX, создать что-либо с Директиксом - не проблема.
Но проблема возникла при использовании двух мониторов с видеокартой Матрокс 450 (двухголовая). DelphiX позволяет создать список драйверов видеоустройств с помощью енумерате, но она видит только две разные видеокарты, а не двухголовость матрокса.
ЕнумератеЕкс видит двухголовость, но явно не описана в DelphiX. В заголовках Джеди все описано, но выдает какую-то белиберду, использовать которую в дальнейшем для переключения приложения с директиксом сложновато. Может, кто-нибудь подскажет, как грамотно создавать директикс на втором мониторе с фуллскрином?


 
KilkennyCat   (2002-04-22 12:37) [1]

Оказывается, не сюда поместил вопрос. Прошу прощения, не заметил другого форума. С вопросом разобрался, если кого-то интересует эта особенность Директикса - спрашивайте.


 
Сергей Чурсин   (2002-04-24 02:01) [2]

Интересно... Раскажи вкратце (чтоб тебе не напрягаться :) )...


 
KilkennyCat   (2002-04-26 03:45) [3]

Рассказываю :)

создаем типчик

type
TDirectDrawEnumEx = record
GUID: TGUID;
DriverDescription: String[100];
DriverName: String[100];
end;
PDirectDrawEnumEX = ^TDirectDrawEnumEX;

объявляем:

private
listadapter : Tlist;
lladap : PDirectDrawEnumEX;
AD, BD : IDirectDraw7;

исчо одну функцию:

implementation

{$R *.dfm}

function EnumDevices(lpGUID: PGUID; lpDriverDescription: LPSTR; lpDriverName: LPSTR; lpContext: Pointer; Monitor: HMonitor):BOOL; stdcall;
var
p: PDirectDrawEnumEx;
begin
New( p );
if lpGUID = nil then
ZeroMemory( @(p.GUID), sizeof(p.GUID) )
else p.GUID := lpGUID^;
p.DriverDescription := lpDriverDescription;
p.DriverName := lpDriverName;
TList(lpContext).Add( p );
Result := BOOL(DDENUMRET_OK);
end;

теперь можно получить абсолютно все видеодрайверы:

listadapter := Tlist.Create;
DirectDrawEnumerateEx(EnumDevices, listadapter, $00000001 or $00000002 or $00000004);

прошу прощение за несимвольные флаги - их всего три и нужны все.

Я знаю, что у меня их три (первые два - дублируют друг друга), обращаюсь к третьему:

lladap := listadapter[2];

и создаем объекты на два монитора:

DirectDrawCreateEx (nil, AD, IDirectDraw7, nil);
DirectDrawCreateEx (@lladap.GUID, BD, IDirectDraw7, nil);
AD.SetCooperativeLevel(Handle, DDSCL_SETFOCUSWINDOW);
AD.SetCooperativeLevel(Handle, DDSCL_ALLOWREBOOT or DDSCL_FULLSCREEN or DDSCL_EXCLUSIVE);
ad.SetDisplayMode(800,600,16,0,0);
BD.SetCooperativeLevel(Handle, DDSCL_SETFOCUSWINDOW or DDSCL_CREATEDEVICEWINDOW or DDSCL_ALLOWREBOOT or DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN);
Bd.SetDisplayMode(640,480,8,0,0);

поверхности создаются стандартно. Разобраться помог Microsoft SDK DirectX 7






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

Форум: "Media";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-3257
Ruslan_55
2002-08-09 20:04
2002.09.02
Вопрос по хранимым процедурам


1-3486
KPY
2002-08-20 14:30
2002.09.02
как сделать непрямоугольную кнопку?


14-3629
Axel
2002-08-05 12:26
2002.09.02
Galileo, Delphi for .NET


1-3361
Елена
2002-08-22 08:09
2002.09.02
OnKeyDown формы


1-3339
Smok_er
2002-08-21 18:27
2002.09.02
DblClick на Tab e PageControl a





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