Előszó | 15 |
I. rész. Alapozás | 17 |
Bevezetés | 19 |
Ismerkedés a DirectX-szel | 19 |
A COM áttekintése | 20 |
A DirectX áttekintése | 23 |
DirectDraw | 24 |
DirectSound | 24 |
DirectD3 | 24 |
DirectInput | 25 |
DirectPlay | 25 |
DirectSetup | 26 |
DirectMusic | 26 |
Az objektumorientált programozás és a C++ | 26 |
A Win32 PI áttekintése | 32 |
1. példa. Egy egyszerű Windows Hello World példa | 34 |
Összefoglalás | 41 |
Irodalom | 41 |
Az MFC használata, gyors áttekintés | 42 |
VC++ alkalmazásvarázsló használata egy általános alkalmazásváz kifejlesztéséhez | 43 |
z MFC dokumentum/nézet szerkezete | 50 |
A CWinpp osztály | 51 |
CMainFrame osztály | 58 |
CDocument osztály | 64 |
CView osztály | 69 |
Üzenettérképek | 75 |
A ClassWizard használatát tagfüggvények hozzáadásához | 76 |
A Resource editor használata párbeszédablakok, menüelemek, bitmap képek stb. hozzáadására | 79 |
Hibakeresés a VC++ fordító segítségével | 84 |
Távoli hibakeresés megvalósítása teljes képernyős DirectDraw alkalmazások esetében | 86 |
2.1. példa. Egyszerű SDI alkalmazás létrehozása DirectX stílusban | 90 |
Érvek az MFC mellett és ellen | 98 |
Irodalom | 98 |
A Windows GID-je, DIB-jei és palettái | 99 |
A Windows GDI | 99 |
A Windows DIB | 105 |
A Windows paletták és 256 szín | 109 |
A Windows palettaüzeneteinek kezelése | 115 |
DIB-ek és paletták által megoldott feladatokat egységbe záró osztályok tervezése | 117 |
A DIB és paletta osztályok elkészítése | 118 |
A CDib osztály | 118 |
A CPal osztály | 136 |
3.1. példa. Gömb mozgatása a kliensterületen belül az új osztály felhasználásával | 141 |
Irodalom | 148 |
II. rész. DirectDraw | 148 |
A DirectDraw áttekintése | 151 |
Miért kívántos a DirectDraw használata? | 151 |
Mik az újdonságok a DirectDraw 6-ban? | 153 |
A DirectDraw architektúra | 154 |
A hardver absztrakciós réteg (HAL) | 156 |
A hardver emulációs réteg (HEL) | 156 |
A különféle DirectDraw interfészek és objektumok | 157 |
DirectDraw objektum | 160 |
DirectDrawSurface objektum | 160 |
DirectDrawPlatte objektum | 160 |
DirectDrawClipper objektum | 161 |
DirectDrawVideoPort objektum | 161 |
Együttműködési szintek, teljes képernyős és ablakos módok | 161 |
Megjelenítési módok | 164 |
Elsődleges felületek, elülső és hátsó pufferek és a lapváltás | 166 |
Képernyőn kívüli felületek (Off-screen felületek) | 169 |
Transzparens átlapolás és színkulcsok | 169 |
A készülék adottságainak lekérdezése | 171 |
4.1.példa. A grafikai hardver adottságainak lekérdezés és megjelenítése | 174 |
Az IDirectDraw4 függvényei | 197 |
Az IDirectDraw adatstruktúrái | 199 |
Munka a felületekkel | 200 |
A DirectDraw felületek áttekintése | 200 |
Felületek létrehozása | 202 |
Egyszerű elsődleges felület létrehozása | 202 |
Összetett elsődleges felület létrehozása | 203 |
Képernőyn kívüli felület létrehozása | 204 |
Felületek átlapolása és váltása | 205 |
A színkódok és az átlátszóság | 207 |
Felületek visszaállítása | 209 |
5.1.A. példa. ADIB átlapolása az elsődleges felületre HDC használatával | 210 |
5.1.B. példa. Képernyőn kívüli felület átlapolása az elsődleges felületre | 227 |
5.1.C. példa. Képadatok felületre írása | 231 |
5.1.D. példa. Dupla pufferelés és felületek átlapolása | 234 |
Az IDirectDrawSurface4 függvényei | 241 |
Az IDirectDrawSurface adatstuktúrái | 243 |
Munka a palettákkal | 244 |
A DirectDraw paletták áttekintése | 244 |
6.1.A. példa. Paletta létrehozása és beállítása az elsődleges felületen | 247 |
6.1.B. példa. Paletta animáció | 251 |
6.1.C. példa. Munka palettákkal ablakos üzemmódban | 255 |
Az IDirectDrawPalette függvényei | 263 |
Munka a vágókkal | 264 |
A DirectDraw vágók áttekintése | 264 |
Munka vágókkal ablakos üzemmódban | 266 |
Munka a vágókkal teljes képernyős üzemmódban | 267 |
7.1.A. példa. Vágás ablakos üzemmódban | 269 |
7.1.B példa. Vágás teljes képernyős üzemmódban | 275 |
Összefoglalás | 280 |
Az IDirectDrawClipper függvényei | 281 |
Az IDirectDrawClipper adatstruktúrái | 281 |
DirectDraw osztálykönyvtár fejlesztése | 282 |
A grafikai könyvtár osztályainak azonosítása | 284 |
A sprite-ok | 285 |
Az SDIB osztály | 286 |
Az SSprite osztály | 295 |
Az SDXDraw osztály | 306 |
Az SDXSurface osztály | 317 |
Az SDXPalette osztály | 340 |
Az SDXClipper osztály | 348 |
Az SGraphics osztály | 355 |
Összefoglalás | 356 |
III. rész. DirectSound | 357 |
DirectSound áttekintése | 359 |
A DirectSound használatának előnyei | 359 |
A DirectSound architektúra | 360 |
A különböző DirectSound interfészekről | 362 |
IDirectSound | 363 |
IDirectSoundBuffer | 364 |
IDirectSound3DBuffer, IDirectSound3DListener | 364 |
IDirectSoundCapture, IDirectSoundCaptureBuffer | 365 |
IDirectSoundNotify | 365 |
IKspropertySet | 365 |
Együttműködési szintek | 366 |
A készülék adottságainak lekérdezése | 367 |
9.1. példa. Alkalmazás a hanghardver adottságainak lekérdezésére és megjelenítésére | 369 |
Az IDirectSound függvényei | 382 |
Az IDirectSound adatstruktúrái | 383 |
A DirectSound és a DirectSoundBuffers használata | 384 |
IDirectSoundBuffer | 384 |
Hangpufferek létrehozása | 386 |
RIFF, Wav fájlok és adatstruktúrák | 390 |
Hangpufferek lejátszása | 397 |
Hangpuffer vezérlők | 400 |
Pufferek visszaállítása | 402 |
Az elsődleges hangpuffer elérése | 403 |
Hangpuffer jelzők | 404 |
10.1. példa. Wav fájl betöltése és lejátszása DirectSounddal | 405 |
Az IDirectSoundBuffer függvényei | 439 |
Az IDirectSoundBuffer adatstruktúrái | 440 |
Háromdimenziós DirectSound | 441 |
3D DirectSound áttekintése | 441 |
Az IDirectSound3DBuffer áttekintése | 443 |
A 3D hangpufferek minimum és maximum távolságának beállítása | 444 |
A 3D hangpuffer üzzemmódjának, pozíciójának és sebességének beállítása | 445 |
A 3 D hangpufferek hangkúpjának beállítása | 448 |
Kötegelési paraméterek | 450 |
Az IDirectSound3DListener áttekintése | 451 |
A hallgató irányultsága, pozíciója és sebessége | 453 |
A távolsági, a Doppler- és a csillapítási faktor beállítása | 454 |
Kötegelési paraméterek és elhalasztott beállítások | 456 |
11.1. példa. A DirectSound3DBuffer használata helyzeti hang generálásra | 457 |
Az IDirectSound3DBuffer függvényei | 486 |
Az IDirectSound3DBuffer adatstuktúrái | 487 |
Az IDirectSound3DListener függvényei | 487 |
Az IDirectSound3Dlistener adatstuktúrái | 488 |
DirectSound osztálykönyvtár fejlesztése | 489 |
Az osztályok azonosítása a könyvtár számára | 489 |
Az SWave osztály | 490 |
Az SDXSound osztály | 492 |
Az SDXSoundBuffer osztály | 499 |
Az SSound osztály | 504 |
IV. rész. A DirectPlay | 505 |
A DirectPlay áttekintése | 507 |
Miért kényelmes a DirectPlay használata? | 507 |
A DirectPlay 6 újdonságai | 508 |
A DirectPlay szerkezete | 510 |
A különféle DirectPlay felületekről | 513 |
Szolgáltatók | 514 |
Munkafolyamatok és aszinkron felsorolások | 519 |
A DirectPlay használata, ha egy munkafolyamat gazdájává kívánunk válni | 526 |
A DirectPlay használata, ha egy munkafolyamathoz kívánunk csatlakozni | 527 |
Játékosok és csoportok | 528 |
Üzenetek küldése | 537 |
Üzenetek fogadása | 543 |
DirectPlay rendszerüzenetek és struktúrák | 546 |
Szálak használata a DirectPlay üzenetek előhívásához | 549 |
Az MFC támogatása több szál használatához és az eseményobjektumokhoz | 552 |
Az eszközök képességeinek lekérdezése | 553 |
Biztonság | 555 |
Tűzfal (firewall) támogatás | 555 |
13.1. példa. Egyszerű párbeszédprogram létrehozása a DirectPlay segítségével | 556 |
Az IDirectPlay függvényei | 594 |
Az IDirectPlay adatstuktúrái | 597 |
A DirectPlay lobbyk áttekintése | 598 |
Mi is az a DirectPlay lobby? | 598 |
Az IDirectPlayLobby szerkezete | 600 |
Hogyan biztosítsunk lobby támogatást az alkalmazásaink számára? | 601 |
Lobby üzenetek küldése és fogadása | 608 |
14.1. példa. Lobby támogatás hozzáadása a párbeszéd programunkhoz | 609 |
Az IDirectPlayLobby függvényei | 625 |
Az IDirectPlayLobby adatstuktúrái | 626 |
A DirectPlay osztálykönyvtárának fejlesztése | 627 |
A könyvtár osztályainak azonosítása | 627 |
Az SDXPlay osztály | 628 |
Az SPacket osztály | 651 |
A CCommunications osztály | 656 |
V. rész. DirectInput | 667 |
A DirectInput áttekintése | 669 |
A bemenetek programozásának rövid története | 669 |
A DirectX színrelépése | 670 |
A DirectInput szerkezete | 671 |
Áttekintés | 671 |
Számbavétel, felsorolás mindenütt | 672 |
Az IDirectInput interfészfelület | 672 |
A DirectInput objektumok inicializálása | 672 |
A DirectInput objektumok használata az eszközök felsorolására | 674 |
Előre definiált eszközök | 674 |
Egyéb eszközök | 674 |
Az EnumDevices függvény | 674 |
A visszatérési függvény | 675 |
További függvények | 677 |
A memória felszabadítása | 680 |
Hogyan tovább? | 681 |
A billentyűzet használata | 681 |
Az eszközkezelésről általában | 682 |
Hasznos első lépés | 682 |
Az eszköz objektumának létrehozása | 683 |
Az adatformátum beállítása | 683 |
A billentyűzet együttműködési szintjének beállítása | 684 |
Hozzáférés a billentyűzethez | 685 |
A billentyűzet adatainak elérése | 687 |
Az adatok megtekintése | 687 |
Megjegyzések az egyszerre történő billentyűlemonyásokról, illetve nem minden billentyűzet egyforma | 688 |
Felszabadítás | 689 |
Hogyan tovább? | 689 |
Az egér használata | 690 |
A relatív mozgás | 690 |
Az egér objektumának létrehozása | 691 |
Az adatformátum beállítása | 691 |
Az egér együttműködési szintjének beállítása | 692 |
Pufferelt és nem pufferelt input | 693 |
A pufferelt bevitel előkészítése | 693 |
Hozzáférés az egérhez | 695 |
Az adatok előhívása az egérből | 695 |
Felszabadítás | 698 |
A Joystick használata | 699 |
Rendelkezésünkre áll a joystick? | 700 |
A joystick objektumának létrehozása | 700 |
A joystick adatformátumának beállítása | 702 |
A Joystick tulajdonságainak beállítása | 702 |
Az együttműködés szintjének beállítása | 703 |
Hozzáférés a joystickhoz | 704 |
Az adatok megjelenítése a joystikckból | 704 |
Felszabadítás | 706 |
Az erő-visszacsatoló eszközök használata | 707 |
Rendelkezésünkre áll-e erő-visszacsatoló joystick? | 707 |
Az erő-visszacsatoló joystick objektumának létrehozása | 708 |
Az erő-visszacsatoló joystick tulajdonságaink beállítása | 709 |
Az auto-center beállítása | 710 |
A hatások felsorolása | 711 |
Effektek létrehozása | 713 |
A tengelyek tömbjének létrehozása | 713 |
Az irányok értékeinek tömbje | 714 |
Effektspecifikus struktúra létrehozása | 715 |
A hatás borítékjának létrehozása | 715 |
Az effekt struktúrájának létrehozása | 717 |
A hatás objektumának létrehozása | 721 |
A hatás lejátszása | 722 |
Dinamikusan változó hatások | 723 |
Különféle függvények | 725 |
Felszabadítás | 726 |
A DirectInput osztálykönyvtár fejlesztése | 727 |
Az SDXInput osztály | 727 |
A C++ objektum létrehozása | 730 |
A COM objektum létrehozása | 731 |
Az eszközök felsorolása | 732 |
Különféle függvények | 734 |
Az SDXKeyboard osztály | 735 |
Az SDXMouse osztály | 739 |
Az SDXJoystick osztály | 747 |
Az SDXEffect osztály | 755 |
Készen vagyunk! | 758 |
VI. rész. DirectMusic | 761 |
A DirectMusic áttekintése | 763 |
A DirectMusic hatalmas interfészfelülete | 765 |
Projektek kialakítása a DirectMusic segítségével | 765 |
Verziókkal kapcsolatos információk | 766 |
MIDI | 766 |
Ismerkedés a DirectMusic terminológiájával | 767 |
A DirectMusic Producer | 768 |
A DirectMusic API-jának használata | 770 |
Az IDirectMusic | 771 |
Az IDirectMusicPerformance | 774 |
Az IDirectMusicLoader | 778 |
Az IDirectMusicSegment (valamint az IDirectMusicaPerformance-hoz kapcsolódó függvények) | 779 |
z IDirectMusicCollection, az IDirectMusicInstrument és az IDirectMusicBand | 783 |
Interaktív zene | 786 |
Az IDirectMusicComposer | 788 |
Hogyan tovább? | 789 |
DirectMusic osztálykönyvtár fejlesztése | 790 |
Néhány gyakori probléma megoldása | 790 |
Az SDXMusic osztály | 793 |
Az SDXPerformance osztály | 805 |
Az SDXSegment osztály | 812 |
Hogyan tovább? | 818 |
VII. rész. Összegzés | 819 |
Játék létrehozása az osztálykönyvtárak segítségével | 821 |
Egy oszlopos játék megtervezése | 821 |
A meteorfelhő áttekintése | 821 |
A játék meghatározása | 822 |
Az osztályok tervezése | 824 |
Az MFC és a VC++ mint váz és fordító | 826 |
Könyvtár osztályok versus alkalmazás osztályok | 830 |
A grafika | 831 |
A hang | 843 |
Az input lekérdezése | 848 |
A játék szerkezete | 850 |
Lezárás | 858 |
Tárgymutató | 861-889 |