ΠΡΠ΅ Π‘ΠΠ-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Ρ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ 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. ΠΠ°Π³Π»ΡΠ½Π΅ΠΌ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ°ΡΠ°Π»ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ: