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

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

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

Рис. 3.4. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Initial Settings


По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выбираСтся Ρ€Π΅ΠΆΠΈΠΌ 640Γ—80Γ—6. ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ значСния, принятыС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Next.

Π’ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ ΠΎΠΊΠ½Π΅ прСдлагаСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ содСрТимоС прилоТСния β€” None ΠΈΠ»ΠΈ Bitmap. ΠŸΡ€ΠΈ установкС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ None Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ, Π° ΠΏΡ€ΠΈ установкС Bitmap ΠΎΠ½ΠΎ выполняСт Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ растрового изобраТСния. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Contents ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° рис. 3.5. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ устанавливаСтся ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Bitmap; ΠΈΠΌΠ΅Π½Π½ΠΎ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ использован Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Bounce.

Рис. 3.5. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Contents


Π’ пятом ΠΈ ΡˆΠ΅ΡΡ‚ΠΎΠΌ ΠΎΠΊΠ½Π°Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° классов C++, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Π΅ для прилоТСния. ИмСна классов ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Π΄Π²ΡƒΡ… тСкстовых полях; ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Class Names ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° рис. 3.6.

Рис. 3.6. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Class Names


НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Finish. ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ подтвСрТдСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ значСния всСх Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ своС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, AppWizard создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ Π΅Π³ΠΎ Π² Developer Studio. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΊ компиляции. Если Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎ Ρ‡Π΅Ρ€Π½ΠΎΠΌΡƒ экрану Π±Π΅Π³Π°Π΅Ρ‚ растровый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Рис. 3.7. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ подтвСрТдСния

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° прилоТСния

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Bounce, ΠΌΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… для Π΅Π³ΠΎ построСния. Π’Π°ΠΊ Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ этого прилоТСния, Π° Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° CD-ROM устроСны Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ β€” Ρ‚ΠΎ ΠΈ ΠΊΠΎΠ΄ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ· этой ΠΊΠ½ΠΈΠ³ΠΈ.

НазначСниС классов

Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Bounce ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° MFC, Π½ΠΎ Π±Π΅Π· Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ для Π½Π΅Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Β«Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚/Π²ΠΈΠ΄Β». ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ классы MFC CWnd ΠΈ CWinApp. Π­Ρ‚ΠΎ позволяСт ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы, связанныС с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Β«Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚/Π²ΠΈΠ΄Β», ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° DirectDraw сосрСдоточСна Π² классах DirectDrawWin ΠΈ DirectDrawApp, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ CWnd ΠΈ CWinApp соотвСтствСнно. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ‚ DirectDrawWin ΠΈ DirectDrawApp ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ Π΄Π²Π° класса. Π­Ρ‚ΠΈ классы (Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Bounce ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ BounceWin ΠΈ BounceApp) ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния. На рис. 3.8 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° иСрархия этих ΡˆΠ΅ΡΡ‚ΠΈ классов вмСстС с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ классами MFC, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CWnd ΠΈ CWinApp.

Рис. 3.8. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Bounce


ΠšΠ»Π°ΡΡΡ‹ Π½Π° рисункС соСдинСны стрСлками Π² соотвСтствии с ΠΈΡ… наслСдствСнными связями. Класс CObject, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ Π² основании иСрархичСского Π΄Π΅Ρ€Π΅Π²Π°, являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… классов прилоТСния. ΠžΡ‚ Π½Π΅Π³ΠΎ стрСлки ΠΈΠ΄ΡƒΡ‚ ΠΊ классам Π±ΠΎΠ»Π΅Π΅ высокого уровня BounceWin ΠΈ BounceApp.

ΠŸΡΡ‚ΡŒ классов Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Π΄Π΅Ρ€Π΅Π²Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ MFC. Π― ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠΏΠΈΡˆΡƒ эти классы ΠΈ объясню, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ Π½Π΅ стану ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ MFC Π½Π΅ относится ΠΊ Ρ‚Π΅ΠΌΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ.

Класс CObject являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для всСх Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… классов MFC. Он обСспСчиваСт самыС ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ классов β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ сСриализации ΠΈ нСстандартныС вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² new ΠΈ delete (для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, класс CObject содСрТит Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ дСструктор. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ всС классы, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ CObject, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ вСсти сСбя Π²ΠΎ врСмя уничтоТСния нСзависимо ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΈ этом указатСля.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° схСм сообщСний (message maps) Π² MFC Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² классС CCmdTarget, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΎΡ‚ CObject. Π‘Ρ…Π΅ΠΌΠ°ΠΌΠΈ сообщСний Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ макросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ClassWizard Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² классы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ классы нашСго прилоТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ CCmdTarget, для создания схСм сообщСний ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ClassWizard.

Класс CWinThread ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² MFC для инкапсуляции Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (execution thread). CWinThread примСняСтся для написания ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π² нашСм случаС ΠΎΠ½ обСспСчиваСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния.

Класс CWinApp, двиТущая сила всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ MFC, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ CWinThread Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΈ добавляСт Π² Π½Π΅Π³ΠΎ свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², унаслСдованной ΠΎΡ‚ CWinThread, CWinApp ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ доставку сообщСний. ИмСнно Π² Π½Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ доставки сообщСний, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ всСх Windows-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Класс CWinApp являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для класса DirectDrawApp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ CWinApp возмоТностями, спСцифичСскими для DirectDraw. Класс DirectDrawApp управляСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ DirectDraw, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ класс ΠΎΠΊΠ½Π° прилоТСния, обновляСт содСрТимоС экрана ΠΈ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ «мусор» ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Класс CWnd прСдставляСт ΠΎΠΊΠ½Π° Π² MFC. CWnd β€” большой класс; ΠΎΠ½ содСрТит сотни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ практичСски Π»ΡŽΠ±ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΠΎΠΊΠ½Π°ΠΌΠΈ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ класс CWnd Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ для класса DirectDrawWin, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности CWnd спСцификой DirectDraw. ΠšΠ»Π°ΡΡΡ‹, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ DirectDrawWin, Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ DirectDraw.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° прилоТСния

ΠšΠ»Π°ΡΡΡ‹ DirectDrawWin ΠΈ DirectDrawApp ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ «каркас» для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ DirectDraw. Π˜Ρ… главная Ρ†Π΅Π»ΡŒ β€” ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ основу прилоТСния ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ скрывая ΠΎΡ‚ программиста всСх подробностСй. Π’Π΅Π΄ΡŒ эта ΠΊΠ½ΠΈΠ³Π° ΡƒΡ‡ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для DirectDraw, Π° Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΊΠΈΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ DirectDraw.

Π˜Ρ‚Π°ΠΊ, классы DirectDrawWin ΠΈ DirectDrawApp ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ основу прилоТСния ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. «Бтруктурная основа» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, хотя всю Π³Π»Π°Π²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ придСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π²Π°ΠΌ, эти классы Ρ€Π΅ΡˆΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. НапримСр, класс DirectDrawWin позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ исходный Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ. Для этого класс Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая просматриваСт список доступных Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…. Π­Ρ‚Π° функция вызываСтся классом DirectDrawWin Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ классы Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прилоТСния. Вакая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° организуСтся Π² Π²ΠΈΠ΄Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. НапримСр, класс DirectDrawWin содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ BMP-Ρ„Π°ΠΉΠ»Π° Π½Π° ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ позволяСт эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ написанный ΠΊΠΎΠ΄.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ссли Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ DirectDraw, нСльзя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ выполнял всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π° вас. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΊΠΎΠ΄ структурной основы Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚; Π½Π΅ сущСствуСт Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π²ΠΎ всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, находящийся Π½Π° CD-ROM ΠΈΠ»ΠΈ сгСнСрированный AppWizard, являСтся Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΌ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ; ΠΎΠ½ Π½Π΅ зависит Π½ΠΈ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ MFC ΠΈ DirectX. Π’Ρ‹ смоТСтС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ структурного ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ сочтСтС Π½ΡƒΠΆΠ½Ρ‹ΠΌ.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ классы

ΠšΠ»Π°ΡΡΡ‹ DirectDraw ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ основа для классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… спСцифичСскиС возмоТности прилоТСния. Π’ случаС прилоТСния Bounce эти возмоТности ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ классами BounceWin ΠΈ BounceApp.

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

β€’ Π’Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ исходный Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ. ΠŸΡ€ΠΈ запускС прилоТСния класс DirectDrawWin ΠΎΠΏΠΎΠ·Π½Π°Π΅Ρ‚ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌΡ‹. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅ΠΆΠΈΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ устанавливаСтся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

β€’ Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС повСрхности, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ повСрхности ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°.

β€’ ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π΄Ρ€Ρ‹, выполняя Π±Π»ΠΈΡ‚Ρ‚ΠΈΠ½Π³ содСрТимого повСрхностСй Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ прилоТСния, ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… посрСдством ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ страниц.

β€’ Π’ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ потСрянныС повСрхности. Класс DirectDrawWin автоматичСски ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ повСрхности ΠΈ Π² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ прСдоставляСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классам Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Π΅ восстановлСния. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ вмСстС со Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ восстанавливаСтся классом DirectDrawWin.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² хронологичСском порядкС, начиная с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прилоТСния. ПослС этого ΠΌΡ‹ займСмся Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΈ восстановлСниСм потСрянных повСрхностСй, Π° Π·Π°ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DirectDrawWin. НаконСц, нашС знакомство с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Bounce закончится Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΊΠΎΠ΄Π°, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния.