Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π“Ρ€Π°Ρ„ΠΈΠΊΠ° DirectX Π² DelphiΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 5

Автор ΠœΠΈΡ…Π°ΠΈΠ» ΠšΡ€Π°ΡΠ½ΠΎΠ²

ВсС БОМ-интСрфСйсы унаслСдованы ΠΎΡ‚ интСрфСйса, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ lunknown, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ трСмя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ: Querylnterface, AddRef ΠΈ Release. О Π½ΠΈΡ… Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π·Π½Π°Ρ‚ΡŒ совсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, вСдь нСпосрСдствСнно ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΎΠ½ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚.

ПослСдний Π² этом спискС ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΡ‹ ΡƒΠΆΠ΅ вскользь обсуТдали - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Часто использованиС Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ простым освобоТдСниСм памяти.

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для подсчСта ссылок Π½Π° интСрфСйсы. ΠšΠ»ΠΈΠ΅Π½Ρ‚ явно ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ экзСмпляра БОМ-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ _Release. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π²Π΅Π΄Π΅Ρ‚ подсчСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ, ΠΈ ΠΊΠΎΠ³Π΄Π° количСство ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² становится Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ, Ρ‚. Π΅. ΠΊΠΎΠ³Π΄Π° счСтчик ссылок становится Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚ сСбя сам. Новичок ΠΌΠΎΠΆΠ΅Ρ‚ здСсь Ρ€Π°ΡΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ, поэтому я ΡƒΡ‚ΠΎΡ‡Π½ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ всСм этим Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ часто, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ особо Π½Π΅ Π½Π°ΠΏΡ€ΡΠ³Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ссли всС это каТСтся слоТным. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° интСрфСйсы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, способСн ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, Π±Π΅Π· Π²Π΅Π΄ΠΎΠΌΠ° сСрвСра. Π’ Ρ‚Π°ΠΊΠΎΠΉ ситуации Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠ΅ΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠŸΠ°Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² AddRef ΠΈ _Release Π΄Π°Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ исчСзнСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½ΠΈΠΊΡ‚ΠΎ Π΅Π³ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° интСрфСйс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ создании Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ИмСя ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ интСрфСйсы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° эти ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Querylnterface.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Π’ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ DirectX сСдьмой вСрсии. Π­Ρ‚ΠΎ самоС простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ DirectDraw, ΠΈ здСсь Π½Π΅Ρ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ опрСдСляСмся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π»ΠΈ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ дальнСйшая Ρ€Π°Π±ΠΎΡ‚Π°. Π£ DirectDraw Π½Π΅Ρ‚ интСрфСйсов восьмой вСрсии, ΠΈ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ ΡΠ΅Π΄ΡŒΠΌΡƒΡŽ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вСрсии. ПозТС ΠΌΡ‹ смоТСм Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ присутствиС ΠΈΠΌΠ΅Π½Π½ΠΎ восьмой вСрсии, Π° ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ наши прилоТСния ΠΏΡƒΡΡ‚ΡŒ Π΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π•Ρ…04, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅, Ссли Π²Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия сами.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π² Π΅Π³ΠΎ ΠΎΠΏΡ†ΠΈΠΈ Search path Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, содСрТащСму Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» DirectDraw.pas, Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΌ записано "..\..\DUnits".

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ private ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:


FDD : IDirectDraw; FDD7 : IDirectDraw7;

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· Π½ΠΈΡ… являСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ DirectDraw. Вторая пСрСмСнная Π½ΡƒΠΆΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Querylnterface. Π’ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ Π½Π°ΠΌΠΈ сСйчас ΠΌΠΎΠ΄ΡƒΠ»Π΅ DirectDraw.pas Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ строки, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ смысл Π½ΠΎΠ²Ρ‹Ρ… для нас Ρ‚ΠΈΠΏΠΎΠ²:


IDirectDraw = interface; DirectDraw7 = interface;

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово interface здСсь, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, являСтся Π½Π΅ Π½Π°Ρ‡Π°Π»ΠΎΠΌ сСкции модуля, Π° Ρ‚ΠΈΠΏΠΎΠΌ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ интСрфСйсам БОМ-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ создания ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ:


procedure TForml.FormCreate(Sender: TObject); var

hRet : HRESULT; // Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная

begin

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DirectDraw hRet := DirectDrawCreate (nil, FDD, nil);

if Failed (hRet) // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ дСйствия

then ShowMessage ('Ошибка ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ DirectDrawCreate')

// ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π»ΠΈ интСрфСйс 7-ΠΉ вСрсии DirectX

else hRet := FDD.Querylnterface (IID_IDirectDraw7, FDD7);

if Failed (hRet) // Или ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ…,

// ΠΈΠ»ΠΈ ΠΎΠ±Π° интСрфСйса Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹

then ShowMessage ('DirectX 7-ΠΉ вСрсии Π½Π΅ доступСн')

else ShowMessage ('DirectX 7-ΠΉ вСрсии доступСн');

// ОсвобоТдСниС памяти, занятой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ if Assigned (FDD7) then FDD7 := nil;

if Assigned (FDD) then FDD := nil;

end;


Π£ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ этого, ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΠ» ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ упрощСниям, Π½ΠΎ всС Ρ€Π°Π²Π½ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° здСсь появится масса вопросов. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΏΡ€Π΅Π΄Π²ΠΎΡΡ…ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡ….

Π˜Ρ‚Π°ΠΊ, пСрвая строка ΠΊΠΎΠ΄Π° - созданиС Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Π΅Ρ€Π΅Π· интСрфСйсы ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дСйствия ΠΏΠΎ созданию ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Как я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», для БОМ-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ конструктор.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ DirectDrawCreate описываСтся Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Direct Draw, pas Ρ‚Π°ΠΊ:


DirectDrawCreate : function (IpGUID: PGUID;

out IplpDD: IDirectDraw;

pUnkOuter: lUnknown) : HResult; stdcall;

ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ модуля происходит связываниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ адрСса Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°:


DirectDrawCreate := GetProcAddress(DDrawDLL,'DirectDrawCreate');

Π­Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠΎΠΌΠΎ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. Π—Π΄Π΅ΡΡŒ происходит динамичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Бсылка Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ описываСтся Ρ‚Π°ΠΊ:


var

DDrawDLL : HMODULE = 0;

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ дСйствиС ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ модуля - Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:


DDrawDLL := LoadLibrary('DDraw.dll');

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ быстрого просмотра ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² спискС экспортируСмых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ этот список ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π²Π΅Π»ΠΈΠΊ) присутствуСт имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DirectDrawCreate. Напоминаю, Ρ‡Ρ‚ΠΎ сам Ρ„Π°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ содСрТится Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это C:\Windows\System\. ΠžΡ‚Ρ‚ΡƒΠ΄Π° загруТаСтся функция. Но ΠΊΠ°ΠΊΠΎΠ² смысл Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ Сю Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹? НачнСм с Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹. Из описания ясно, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΅Π΅ - HRESULT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, связанных с OLE. ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ дСйствий, ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° опСрация получСния интСрфСйса.

Π­Ρ‚ΠΎ 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, описаниС Ρ‚ΠΈΠΏΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ system. Ρ€Π°Π·: HRESULT = type Longint;

HRESOLT - ΠΎΠ±Ρ‰ΠΈΠΉ для OLE Ρ‚ΠΈΠΏ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄Ρƒ ошибки. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр ΠΏΠΎ-своСму распрСдСляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄. ΠžΠ±Ρ‰ΠΈΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ эквивалСнтно ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΡŽ ошибки.

ΠšΠΎΠ΄Ρ‹ ошибок, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… функциями, связанными с DirectDraw, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΡΠΌΡ‹ΡΠ»Π΅Π½Π½ΡƒΡŽ Ρ„Ρ€Π°Π·Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

function DDErrorString (Value: HResult) : string;

Π­Ρ‚Π° функция описана Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ DirectDraw. pas. АргумСнтом Π΅Π΅ являСтся ΠΊΠΎΠ΄ ошибки, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ - строка, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ смысл ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΉ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ. РавСнство Π½ΡƒΠ»ΡŽ ΠΊΠΎΠ΄Π° выступаСт ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Анализ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ часто выполняСтся просто сравнСниСм Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ с константой DD_OK, Ρ€Π°Π²Π½ΠΎΠΉ Π½ΡƒΠ»ΡŽ.



ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° S_OK, равная Π½ΡƒΠ»ΡŽ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ всСх модулях, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… OLE, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… опрСдСляСт ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π½ΡƒΠ»Π΅Π²ΡƒΡŽ константу.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для ΠΎΡ†Π΅Π½ΠΊΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, описанной Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ windows. Ρ€Π°Π·:


function Failed (Status: HRESULT): BOOL;

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ нуля. Π•ΡΡ‚ΡŒ ΠΈ обратная Π΅ΠΉ функция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True ΠΏΡ€ΠΈ отсутствии ошибок:


function Succeeded (Status: HRESULT): BOOL;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DirectDrawCreate. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния, Ссли Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² nil, Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²ΠΈΠ΄Π΅ΠΎΠ΄Ρ€Π°ΠΉΠ²Π΅Ρ€. Если ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ строго ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ использовало всС прСимущСства Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ускорСния, Ρ‚ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:


PGUID ( DDCREATE_EMULATIONONLY )

Если ΠΆΠ΅ трСбуСтся ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ создаваСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DirectDraw Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ особСнности, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ, Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° константу DDCREATE_HARDWAREONLY. Ѐункция DirectDrawCreate Ρ‚ΠΎΠ³Π΄Π° "ΠΏΡ€ΠΎΠ³Π»ΠΎΡ‚ΠΈΡ‚" Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² любом случаС, Π½ΠΎ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ особСнности, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ошибки с ΠΊΠΎΠ΄ΠΎΠΌ DDERRJJNSUPPORTED.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ - собствСнно наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅.

ПослСдним Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ всСгда Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ nil. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Π½ΡƒΠΆΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ старыС прилоТСния смогли Π² пСрспСктивС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ БОМ-ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π’Π°ΠΊ, всС, связанноС с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ дСйствиСм, - созданиСм Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, - Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ. Ѐункция DirectorawCreate вряд Π»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ситуации ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ³ΠΎ сбоя Π² Ρ€Π°Π±ΠΎΡ‚Π΅ систСмы. Однако послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дСйствия Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ выполнСния. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡΡ сразу ΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ испСщрСн ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ значСния. НСкоторыС дСйствия Π²ΠΏΠΎΠ»Π½Π΅ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ошибки ΠΏΡ€ΠΈ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ссли ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹, Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΈ. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слСдуСт ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ошибки ΠΏΡ€ΠΈ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹. ΠŸΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ эти ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ нСустойчивого повСдСния систСмы ΠΈΠ»ΠΈ прилоТСния, Π° Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° измСнСния окруТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ вашСго прилоТСния. Анализ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ позволяСт Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° измСнившиСся условия Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π”Π°Π»ΡŒΡˆΠ΅ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка:


FDD.Querylnterface (IID_IDirectDraw7, FDD7);

Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Queryinterface Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для получСния Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π½Π°ΠΌ интСрфСйса, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сСдьмой вСрсии DirectX. ЗаглянСм Π² описаниС этого интСрфСйса. Начало выглядит Ρ‚Π°ΠΊ: