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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π“Ρ€Π°Ρ„ΠΈΠΊΠ° для Windows срСдствами DirectDrawΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 65

Автор Бтэн Π’Ρ€ΡƒΡ…ΠΈΠ»ΡŒΠΎ

Π’ Visual C++ 5.0 ClassView ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ лишь Ρ‚Π΅ классы, Ρ‡ΡŒΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ явно Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Project|Add to Project|Files). Если Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ H-Ρ„Π°ΠΉΠ»Π°, Π² ClassView Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΈΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ Visual C++ 4.x, Π³Π΄Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ всС классы ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Ρ‚Π΅Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависят Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ шагом Π½Π°Π·Π°Π΄, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ составом классов, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… Π² ClassView (Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсиях Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Π½Π΅ Π±Ρ‹Π»ΠΎ).

ΠŸΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ старых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² Visual C++ 5.0 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ всС классы. Класс отсутствуСт Π² ClassView лишь Π² Ρ‚ΠΎΠΌ случаС, Ссли CPP-Ρ„Π°ΠΉΠ» Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ H-Ρ„Π°ΠΉΠ»Π°.

 Π Π°Π±ΠΎΡ‚Π° с Visual C++ 4.0 

Π₯отя Visual C++ 4.0 Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² этой ΠΊΠ½ΠΈΠ³Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π²Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° CD-ROM находятся Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Visual C++ 5.0 (для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ прСдусмотрСна), Π²Π°ΠΌ придСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ дСлаСтся Ρ‚Π°ΠΊ:

1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ пустоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Win32.

2. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ CPP-, H- ΠΈ RC-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с Π½ΠΎΠ²ΠΎΠΉ, пустой Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ.

3. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² пустой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Project|Add to project|Files).

Π—Π°ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ (см. Π²Ρ‹ΡˆΠ΅). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΊ компиляции.

Π₯отя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Visual C++ 4.x смогут ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈΠ· этой ΠΊΠ½ΠΈΠ³ΠΈ, DirectDraw AppWizard Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Если Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ проявят достаточный интСрСс, я ΠΌΠΎΠ³Ρƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° Web-ΡƒΠ·Π΅Π».

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Visual C++ 

И послСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ Visual C++. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ выпускаСтся Π² Ρ‚Ρ€Π΅Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… (Learning, Professional ΠΈ Enterprise), ΠΈΠ½ΠΎΠ³Π΄Π° читатСлям Π½Π΅ удаСтся ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для написания ΠΈ тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ этой ΠΊΠ½ΠΈΠ³ΠΈ я пользовался Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Professional, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π² основном это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π»Π΅Ρ‡ΠΈΠΌΡ‹Π΅. Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ трудности ΠΈ Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊΠΎ ΠΌΠ½Π΅, поТалуйста, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Visual C++.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ рассматриваСтся нСсколько Π½Π΅ связанных Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ошибкС DirectDraw, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… DirectX. НапослСдок я скаТу ΠΏΠ°Ρ€Ρƒ слов ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π°Ρ… Π½Π° Π±Π°Π·Π΅ Ρ‡ΠΈΠΏΠΎΠ² 3Dfx. 

Ошибка ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² DirectDraw 

Π’ DirectDraw Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ошибка, связанная с ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Microsoft (ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ для Π½ΠΈΡ… ΠΏΠΈΡˆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅ΠΎΠ΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹). Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ я столкнулся с Π½Π΅ΠΉ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ. Π― надСялся, Ρ‡Ρ‚ΠΎ ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ написания этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΡƒΠΆΠ΅ исправят, Π½ΠΎ ΠΎΠ½Π° Ρ‚Π°ΠΊ ΠΈ ΠΎΡΡ‚Π°Π»Π°ΡΡŒ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ пиксСлСй ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Windows. НапримСр, Ссли Windows Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² 8-Π±ΠΈΡ‚Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠ΅, Π° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ DirectDraw попытаСтся Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ получится, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π²ΠΏΠΎΠ»Π½Π΅ допустим. Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 8-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΈ 16-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Windows, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π΅ΠΌ ΠΆΠ΅. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях DirectX Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠ΅ сообщСниС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

DDHEL: ChangeDisplaySettings LIED!!!

DDHEL: Wanted 640x480x16 got 1024x768x8

DDHEL: ChangeDisplaySettings FAILED: returned -1

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, это происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ измСнСния Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠ°. Если эта ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»Π°ΡΡŒ, послС этого ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ любой Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρƒ нас появляСтся ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ: Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ отличаСтся ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ пиксСлСй ΠΎΡ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ слСдуСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π΄Π²Π° этапа; сначала ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ совпадаСт ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ пиксСлСй с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ β€” ΠΊ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ Π²Π°ΠΌ.

Π’Π°ΠΊΠΎΠΉ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°Π½Π΅Π²Ρ€ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса DirectDrawWin, прСдставлСнного Π² этой ΠΊΠ½ΠΈΠ³Π΅. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SelectInitialDisplayMode() (которая вызываСтся Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠ°) слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ пиксСлСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°. Если ΠΎΠ½Π° отличаСтся ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Β«Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅Β» ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

int SampleWin::SelectInitialDisplayMode() {

 DWORD curdepth=GetDisplayDepth();

 int i, nummodes=GetNumDisplayModes();

 DWORD w,h,d;

 if (curdepth!=16) ddraw2->SetDisplayMode(640, 480, curdepth, 0, 0 );

 // Π˜ΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ 640x480x16 послС смСны Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠ°

 for (i=0;i>nummodes;i++) {

  GetDisplayModeDimensions(i, w, h, d);

  if (w==640 && h==480 && d==16) return i;

 }

 return -1;

}

ΠœΡ‹ провСряСм Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ пиксСлСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠ° Windows Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ DirectDrawWin::GetDisplayDepth(). Нас интСрСсуСт Ρ€Π΅ΠΆΠΈΠΌ с 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ пиксСлями, поэтому ΠΏΡ€ΠΈ использовании Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ ΠΌΡ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌ 640Γ—480 с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ, вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SetDisplayMode() интСрфСйса DirectDraw. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ поиску Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ β€” просто Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠΉ Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ пиксСлСй, которая Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ установлСна Π² Windows. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ зависит ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠ°, Π½ΠΎ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΡ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π³Π»ΡƒΠ±ΠΈΠ½Π°ΠΌΠΈ пиксСлСй. Π’ частности, ΠΎΠ½ встрСчаСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Switch (см. Π³Π»Π°Π²Ρƒ 4), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ любого Ρ€Π΅ΠΆΠΈΠΌΠ°. Ѐункция SelectInitialDisplayMode() Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Switch выглядит Ρ‚Π°ΠΊ:

int SwitchWin::SelectInitialDisplayMode() {

 DWORD curdepth=GetDisplayDepth();

 int i, nummodes=GetNumDisplayModes();

 DWORD w,h,d;

 // Π˜ΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ 640x480 с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ пиксСлСй

 for (i=0;i<nummodes;i++) {

  GetDisplayModeDimensions(i, w, h, d);

  if (w==640 && h==480 && d==curdepth) return i;

 }

 return 0;

}

Π­Ρ‚Π° функция ΠΈΡ‰Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ 640Γ—480 с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ пиксСлСй. Π’Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ навСрняка найдСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ 640Γ—480 β€” Β«ΠΎΠ±Ρ‰ΠΈΠΉ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒΒ» для всСх Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΈ Π½Π°ΠΌ извСстно, Ρ‡Ρ‚ΠΎ нуТная Π³Π»ΡƒΠ±ΠΈΠ½Π° пиксСлСй ΡƒΠΆΠ΅ установлСна Π² Windows.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ лишь для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. Иногда Π½ΡƒΠΆΠ½ΡƒΡŽ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ пиксСлСй ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сразу, Π±Π΅Π· Π³Π»ΡƒΠΏΡ‹Ρ… ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΌΠ°Π½Π΅Π²Ρ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, я Π΅Ρ‰Π΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ эта ошибка ΠΏΡ€ΠΎΡΠ²Π»ΡΠ»Π°ΡΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… с Windows NT). Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ вашСго прилоТСния, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± этой ошибкС.

БимволичСская константа INITGUID (ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ) 

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° DirectX построСна Π½Π° Π±Π°Π·Π΅ спСцификации COM, Π° для ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠΉ ΠΈ систСматизированной ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ интСрфСйсов Π² COM ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ GUID. Один ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² COM содСрТит ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС конструкции, относящиСся ΠΊ GUID. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ COM Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ символичСская константа INITGUID Π±Ρ‹Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅, Π΄ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² COM (для DirectX Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ COM Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ косвСнно, ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² DirectX). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ константу INITGUID. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΌΠ°Π»ΠΎ Ρ…Π»ΠΎΠΏΠΎΡ‚, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ позволяСт Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ DirectX Π² состав ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.

Π’Ρ‹ Π½Π΅ встрСтитС INITGUID Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° CD-ROM, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, начиная с DirectX 3, появилось Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ INITGUID, достаточно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ„Π°ΠΉΠ» DXGUID.LIB. На случай, Ссли Π²Ρ‹ Π½Π΅ знали…

Эмуляция вСрсий 

Одна ΠΈΠ· ΡˆΠΈΡ€ΠΎΠΊΠΎ Ρ€Π°Π·Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… возмоТностСй COM β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями. COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ устроСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ доступ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ интСрфСйсы. Π’ соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ COM, интСрфСйс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ послС Π΅Π³ΠΎ опрСдСлСния. ВмСсто этого приходится Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ старыС, Ρ‚Π°ΠΊ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ возмоТности. ΠŸΡ€ΠΈ этом Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Π΅Π· опасСний ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΌΠΈ возмоТностями, Π° старыС β€” Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со старыми интСрфСйсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ измСнятся. Π­Ρ‚Π° схСма Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ DirectX со старыми ΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ runtime-частями Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

К соТалСнию, Π² DirectX API часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ структуры. Π­Ρ‚ΠΈ структуры ΡΠ²Π»ΡΡŽΡ‚ΡΡ Β«ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈΒ» β€” доступ ΠΊ Π½ΠΈΠΌ осущСствляСтся нСпосрСдствСнно, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс, ΠΊΠ°ΠΊ для COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π Π°Π·ΠΌΠ΅Ρ€ этих структур ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ (ΠΈ часто измСняСтся) ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ Π½ΠΎΠ²ΠΎΠΉ вСрсии DirectX. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ каТдая функция DirectX, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° пСрСдаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ структуры. Благодаря этому runtime-Ρ‡Π°ΡΡ‚ΡŒ DirectX всСгда ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ, какая вСрсия DirectX SDK ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ для компиляции прилоТСния, ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ β€” ΠΊΠ°ΠΊΠΈΠ΅ поля входят Π² структуру. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π°, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?

А Ρ‡Ρ‚ΠΎ Π²Ρ‹ скаТСтС насчСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая Π±Ρ‹Π»Π° ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² DirectX 5 SDK, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° с runtime-Ρ‡Π°ΡΡ‚ΡŒΡŽ DirectX 3? Если ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ нСсколько структур DirectX 5 Π±Ρ‹Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹ΠΌΠΈ полями ΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ, runtime-Ρ‡Π°ΡΡ‚ΡŒ Π½Π΅ смоТСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ эту структуру, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π² Π½Π΅ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ….