okladka
Jeśli potrafi to Visual C++, Ty także osiągniesz zamierzony efekt. Szybko opanujesz zdolności potrzebne do tworzenia zaawansowanych, komercyjnych aplikacji dla Windows i sieci WWW -- poznasz wszystko, co jest do tego potrzebne, od podstaw tworzenia menu i obsługi myszy, przez technologię ODBC, DAO aż do własnych skryptów. Korzystając z książki zawodowych programistów Ricka Leineckera i Toma Archera -- "Visual C++ 6. Vademecum profesjoanlisty", szybko zdobędziesz najświeższe informacje potrzebne do utrzymania się w czołówce najlepszych programistów.

Proponujemy Ci doskonałą lekturę, która pomoże w:

  • opanowaniu ogólnych i szczegółowych technik programowania dla Windows -- od menu do obsługi wyjątków i operacji wejścia-wyjścia;
  • zwiększeniu możliwości obsługi baz danych za pomocą ODBC, klasy baz danych MFC, DAO, ADO oraz OLE DB;
  • rozszerzeniu aplikacji o dynamicznie łączone biblioteki DLL oraz biblioteki innych programistów;
  • lepszym wykorzystaniu MFC do tworzenia kontrolek ActiveX lub ATL do tworzenia kontrolek o bardzo małej objętości kodu;
  • pisaniu dynamicznych aplikacji internetowych, aplikacji korzystających z klasy CHtmlView oraz aplikacji DHTML;
  • poznaniu zaawansowanych możliwości pakietu Visual Studio, włącznie z makrami VBScript oraz kreatorami AppWizard tworzonymi przez użytkownika.
Na dołączonej do książki płytce CD-ROM znajdziesz rozbudowane narzędzia programistyczne oraz programy demonstracyjne, między innymi:
  • Objective Grid, Objective Grid Lite, Objective Toolkit, Objective Chart, Objective Edit, Objective plug-in oraz Objective Diagram stworzone przez Stingray Software
  • Ultimate Grid oraz Ultimate Wizard Factory stworzone przez Dundas Software
  • BoundsChecker firmy Compuware NuMega Lab
A także pełne programy zademonstrowane w książce!
Część I Podstawy Visual C++
Rozdział 1. Zaczynamy (33)
  • Co nowego pojawiło się w Visual C++ 6.0 (34)
  • Program HelloWorld1 (35)
  • Program HelloWorld2 (38)
  • Kontrolka ATL HelloWorld3 (40)
  • Podsumowanie (43)
Rozdział 2. Korzystanie z zalet zintegrowanego środowiska programisty (45)
  • Korzystanie ze zintegrowanego środowiska (45)
  • Tworzenie pierwszego projektu (47)
  • Dostosowywanie IDE (50)
    • Przeglądanie aktualnych skrótów (50)
    • Dodawanie, modyfikowanie i usuwanie skrótów (51)
  • Korzystanie z pasków narzędzi (53)
    • Wyświetlanie i ukrywanie pasków narzędzi (53)
    • Dostosowywanie pasków narzędzi (54)
  • Podsumowanie (54)
Rozdział 3. Debuggowanie: gdy aplikacja nie działa (55)
  • Co każdy debugger posiadać powinien (56)
  • Debugger zintegrowany z Visual Studio (57)
    • Przygotowanie aplikacji do debuggowania (57)
    • Korzystanie z debuggera podczas działania aplikacji (59)
    • Okna debuggowania (60)
    • Korzystanie z punktów wstrzymania i wykonywanie programu krok po kroku (64)
    • Korzystanie z etykietek danych i okna szybkiego podglądu (67)
    • Użycie okien wątków i wyjątków w trakcie debuggowania (67)
  • Proste techniki debuggowania (69)
    • Korzystanie z okien komunikatów w celu przyspieszenia debuggowania (69)
    • Wyjście debuggera (69)
    • Korzystanie z asercji (70)
    • Zrzut obiektów (71)
    • Klasa CMemoryState i wykrywanie wycieków pamięci (71)
    • Komunikaty śledzenia MFC (72)
  • Zdalne debuggowanie (72)
  • Debuggowanie "just-in-time" (74)
    • Debuggowanie typu "edit and continue" (74)
    • Debuggowanie usług Windows NT (75)
  • Podsumowanie (76)
Rozdział 4. Poprawianie wydajności aplikacji (77)
  • Optymalizowanie kodu (78)
  • Wprowadzenie do profilowania (80)
    • Podstawy profilowania aplikacji (82)
    • Działanie Profilera (82)
    • Rodzaje profilowania (83)
    • Zaawansowane ustawienia Profilera (84)
  • Włączanie profilowania w Visual C++ 6.0 (84)
    • Sterowanie profilowaniem z poziomu Visual Studia (85)
    • Wybór funkcji do profilowania (86)
    • Działanie programu PREP (86)
    • Profilowanie czasu wykonywania funkcji (89)
    • Profilowanie pokrycia funkcji (89)
    • Opcje profilowania linii (90)
    • Profilowanie pokrycia linii (91)
    • Łączenie wyników działania Profilera (91)
    • Eksportowanie danych z Profilera (92)
    • Analizowanie danych Profilera (92)
    • Zawartość globalnych rekordów informacyjnych (93)
    • Lokalne rekordy informacyjne (94)
    • Analizowanie statyki profilowania (95)
    • Przetwarzanie wyników profilera w Excelu (96)
    • Profilowanie bibliotek łączonych dynamicznie (96)
    • Profilowanie komponentów ActiveX lub kontrolek ActiveX (96)
    • Profilowanie kodu typu inline (98)
    • Profilowanie aplikacji wielowątkowych (98)
    • Profilowanie wydajności aplikacji (99)
  • Użycie programu CAP do wyeliminowania powtórzonych wywołań (99)
    • Profilowanie usług Windows NT (101)
  • Podsumowanie (102)
Rozdział 5. Inne narzędzia (103)
  • Spy++ (103)
  • Dostosowywanie menu Tools (107)
  • Inne operacje w menu Tools (108)
  • Przeglądanie klas (109)
  • Przeglądanie kodu źródłowego MFC (111)
  • Podsumowanie (112)
Część II Podstawy programowania Windows
Rozdział 6. Przegląd programowania w MFC (115)
  • Co to jest MFC? (116)
  • Filozofia MFC (117)
  • Zalety płynące z wykorzystania MFC (117)
    • Właściwości, właściwości, właściwości (119)
    • Nadająca się do rozbudowy architektura (119)
  • Hierarchia klas MFC (120)
    • Usługi plików (120)
    • Okna (120)
    • Grafika (124)
    • Obsługa baz danych (125)
  • Nie używasz MFC? (125)
  • Podsumowanie (126)
Rozdział 7. Menu (127)
  • Tworzenie i edycja menu (128)
    • Tworzenie menu (129)
    • Komunikaty menu w MFC (131)
  • Klawisze akceleratorów (132)
    • Polecenia wprowadzane poprzez klawiaturę (133)
    • Definiowanie klawiszy akceleratorów (134)
    • Wybór odpowiednich klawiszy akceleratorów (135)
    • Korzystanie z kilku tabel akceleratorów (138)
  • Dynamicznie zmieniane menu (140)
    • Zakresy poleceń menu (140)
    • Zmiana menu w czasie wykonania (141)
    • Zmiana istniejącego menu (142)
    • Stałe i tymczasowe mapy uchwytów (145)
  • Menu kontekstowe (147)
  • Podsumowanie (149)
Rozdział 8. Mysz i klawiatura (151)
  • Komunikaty wejściowe i stan systemu (152)
  • Obsługa myszy (152)
    • Tworzenie funkcji obsługi komunikatów myszy (153)
    • Konwersja pomiędzy współrzędnymi ekranowymi a współrzędnymi okna (155)
  • Tworzenie programu MFC obsługującego zdarzenia myszy (156)
    • Zdarzenia myszy nie związane z obszarem roboczym (161)
    • Zmiana wyglądu wskaźnika myszy (162)
  • Demonstracyjny program zmieniający kształt wskaźnika myszy (163)
    • Przechwytywanie wskaźnika myszy (166)
    • Ograniczanie ruchów myszy (167)
  • Odczyt danych z klawiatury (168)
    • Klawiatura fizyczna (168)
    • Odzwierciedlanie ogniska wprowadzania (172)
  • Podsumowanie (178)
Rozdział 9. Grafika (179)
  • Wprowadzenie do interfejsu urządzeń graficznych (180)
    • Rodzaje grafiki (180)
    • Rodzaje urządzeń GDI (182)
  • Kontekst urządzenia (183)
    • Atrybuty rysunkowe kontekstu urządzenia (184)
    • Komunikat WM_PAINT (187)
    • Współrzędne rysowania (188)
    • Generowanie komunikatu WM_PAINT (188)
    • Rysowanie poza komunikatem WM_PAINT (190)
  • Manipulowanie tekstem (191)
    • Obsługa koloru przez GDI (191)
    • Kolor tekstu (193)
    • Wyrównywanie tekstu (194)
    • Justowanie tekstu (195)
  • Czcionki (196)
    • Czym jest czcionka? (196)
    • Wybieranie obiektów w kontekście urządzenia (196)
    • Wybieranie czcionek magazynowych (197)
    • Wybieranie czcionek niemagazynowych (197)
  • Pióra i pędzle (201)
    • Pióra (202)
    • Pędzle (204)
  • Tryby odwzorowania (206)
  • Operacje rastrowe (207)
    • Funkcje rysujące tekst (209)
    • Obliczanie współrzędnych tekstu (210)
  • Regiony obcinania (215)
  • Podsumowanie (216)
Rozdział 10. Bitmapy, palety, DIB-y oraz podwójne buforowanie (217)
  • Pamięć bitmapy i pamięć obrazu (218)
  • Tworzenie obiektów CBitmap (220)
  • Ładowanie i ustawianie zawartości bitmapy (222)
  • Rysowanie obiektów CBitmap na ekranie (223)
  • Operacje rastrowe (226)
  • Program BlitDemo (229)
  • Palety i kolor (234)
    • Palety logiczne (237)
    • Zdarzenia dotyczące palety (239)
    • Funkcja SetSystemPaletteUse() (241)
  • Bitmapy niezależne od urządzenia (241)
    • Anatomia pliku DIB (241)
    • Klasa CDib (243)
    • Program demonstracyjny ShowDIB (249)
  • Podwójne buforowanie (252)
  • Podsumowanie (254)
Rozdział 11. Obsługa wyjątków MFC (255)
  • Obsługa wyjątków strukturalnych (256)
  • Składnia obsługi wyjątków (256)
    • Zgłaszanie wyjątków (256)
    • Wychwytywanie wyjątków (257)
  • Porównanie technik obsługi błędów (258)
    • Posługiwanie się kodami błędów (258)
    • Obsługa błędów we właściwym kontekście (259)
    • Poprawa czytelności kodu (261)
    • Zgłaszanie wyjątków przez konstruktory (262)
  • Klasa CException (263)
    • Tworzenie i usuwanie obiektów CException (263)
    • Pobieranie od obiektu CException informacji o błędzie (264)
    • Wychwytywanie wyjątków kilku typów (265)
  • Definiowanie klas wyprowadzonych z klasy CException (266)
    • Klasa CFileException (267)
    • Przykładowy program CFileException (269)
    • Definiowanie własnych klas wyprowadzonych z klasy CException (272)
  • Zaawansowane techniki obsługi wyjątków (275)
    • Decydowanie, która funkcja powinna wychwycić wyjątek (276)
    • Wybór kodu przeznaczonego do umieszczenia w bloku try (277)
    • Wybór kodu przeznaczonego do umieszczenia w bloku catch (278)
    • Zgłaszanie wyjątków w funkcjach wirtualnych (279)
  • Podsumowanie (282)
Rozdział 12. Kontrolki (283)
  • Wprowadzenie (283)
  • Tworzenie kontrolek (284)
    • Używanie klasy CButton (287)
    • Używanie klasy CListBox (289)
    • Używanie klasy CEdit (293)
    • Używanie klasy CStatic (297)
    • Używanie klasy CScrollBar (300)
    • Używanie klasy CComboBox (303)
  • Program Mini edytora (306)
  • Zaawansowane programowanie kontrolek (307)
    • Dodawanie interfejsu klawiatury (307)
    • Modyfikowanie działania kontrolki (308)
    • Przyciski z bitmapami (309)
    • Zmiana koloru kontrolki (311)
  • Podsumowanie (313)
Rozdział 13. Modalne i niemodalne okna dialogowe (315)
  • Korzystanie z edytora dialogów (316)
    • Szablony dialogów (316)
    • Tworzenie nowego szablonu projektu (317)
    • Edycja szablonu dialogu (318)
    • Testowanie dialogu (323)
  • Klasa CDialog (323)
    • Modalne i niemodalne okna dialogowe (323)
    • Tworzenie za pomocą ClassWizarda klas wyprowadzonych z klasy CDialog (325)
  • Zatwierdzanie i wymiana danych dialogu (326)
    • Tworzenie zmiennych DDX (326)
    • Funkcje DoDataExchange oraz UpdateData (327)
  • Program demonstracyjny AddressBook (329)
    • Edycja przykładowego dialogu (329)
    • Klasa CContact (331)
    • Przesłaniamy funkcję OnInitDialog (332)
    • Obsługa komunikatu WM_DESTROY (333)
    • Wyświetlanie danych (334)
    • Obsługa komunikatów przycisków (334)
    • Budowanie i testowanie programu demonstracyjnego (335)
  • Stosowanie w dialogach kontrolek klas pochodnych (336)
    • Tworzenie klas kontrolek (336)
    • Program AddressBook: CAutoCompleteComboBox (340)
  • Serializacja (342)
    • Uczynienie klas serializowalnymi (343)
    • Implementowanie funkcji wirtualnej Serialize() (343)
    • Odczyt danych z dysku (344)
    • Zapis danych na dysk (344)
    • Dodanie serializacji do programu AddressBook (344)
  • Podsumowanie (350)
Rozdział 14. Karty i arkusze właściwości (351)
  • Klasy CPropertySheet oraz CPropertyPage (352)
    • Tworzenie zasobu karty właściwości (353)
    • Tworzenie klasy CPropertyPage (354)
    • Tworzenie i wyświetlanie modalnego arkusza właściwości (354)
    • Tworzenie i wyświetlanie niemodalnego arkusza właściwości (354)
    • Tworzenie i wyświetlanie arkusza właściwości wewnątrz istniejącego dialogu (356)
  • Program demonstrujący modalny arkusz właściwości (357)
  • Karty i arkusze właściwości: rady i techniki (359)
    • Usuwanie standardowych przycisków (359)
    • Zmiana położenia standardowych przycisków (361)
    • Zmiana tytułów standardowych przycisków (362)
    • Wyłączanie zakładek (362)
    • Ponowne włączanie kart właściwości (366)
    • Dynamiczna zmiana tytułów kart właściwości (367)
    • Zmiana czcionki zakładek (370)
    • Użycie mnemonik z obiektami CPropertyPage (370)
  • Podsumowanie (372)
Rozdział 15. Zapis i odczyt danych (373)
  • Klasa CString (374)
    • Tworzenie łańcuchów (374)
    • Dostęp do łańcucha znaków (375)
    • Porównania łańcuchów (376)
    • Wydzielanie podłańcuchów (378)
    • Wyszukiwanie podłańcuchów (378)
  • Program StringDemo (379)
  • Klasa CFile (385)
  • Program FileDemo (389)
  • Klasa CCompressedFile (395)
  • Program CompressDemo (396)
  • Kompresja danych (398)
    • Metoda Huffmana (398)
    • LZSS (399)
    • LZW (399)
    • Funkcje klasy CCompressedFile (400)
    • Działanie programu CompressDemo (402)
  • Klasa CSerial dla komunikacji szeregowej (405)
    • Komunikacja szeregowa (405)
    • Klasa CSerial (406)
  • Klasa CRegistry (408)
    • Wartości Rejestru (408)
    • Predefiniowane klucze Rejestru (408)
    • Powszechnie wykorzystywane klucze Rejestru (409)
    • Działanie klasy CRegistry (410)
  • Korzystanie ze schowka (412)
  • Podsumowanie (415)
Rozdział 16. Dźwięk (417)
  • Odtwarzanie zarejestrowanych dźwięków (417)
    • Rzut okiem na klasę CWave (418)
    • Odtwarzanie plików dźwiękowych za pomocą Windows API (418)
    • Funkcje klasy CWave (421)
  • Program WaveDemo (422)
  • Odtwarzanie plików MIDI (425)
    • Czym jest MIDI? (426)
    • Rzut okiem na klasę CMidi (426)
    • Funkcje klasy CMidi (426)
  • Program MIDIDemo (427)
  • CD Audio (431)
    • Rzut okiem na klasę CCDAudio (432)
    • Media Control Interface (432)
    • Funkcje klasy CCDAudio (433)
  • Program CDPlayer (434)
  • Podsumowanie (440)
Rozdział 17. Timery oraz przetwarzanie w jałowym czasie aplikacji (441)
  • Timery (442)
    • Przygotowanie timera do wysyłania komunikatów WM_TIMER (442)
    • Przygotowanie timera do wywoływania funkcji zwrotnej (444)
  • Program Clock (446)
  • Przetwarzanie w jałowym czasie aplikacji (452)
  • Program OnIdleDemo (454)
  • Podsumowanie (457)
Część III Architektura
Rozdział 18. Zarządzanie pamięcią (461)
  • Zarządzanie pamięcią systemową (461)
    • 32-bitowy, stronicowany tryb adresowania Intela (464)
    • Przestrzeń adresowa procesu w Windows 98 (466)
    • Porządkowanie pamięci systemowej (470)
  • Prywatna pamięć procesu (472)
    • Alokowanie stron (473)
    • Pamięć alokowana przez kompilator (478)
    • Prywatne sterty Win32 (483)
  • Pamięć wspólna (490)
    • Pliki odwzorowane w pamięci (492)
    • Dynamiczne alokowanie wspólnych stron (498)
    • Statyczne alokowanie wspólnych stron (502)
  • Podsumowanie (503)
Rozdział 19. Dokumenty, widoki i SDI (505)
  • Projekt typu dokument-widok (506)
  • Klasa CDocument (507)
    • Deklarowanie klasy dokumentu w aplikacji (508)
    • Zmienne składowe klasy CDocument (509)
    • Dokumenty a przetwarzanie komunikatów (511)
    • Przesłanianie wirtualnych funkcji dokumentu (512)
    • Praca ze złożonymi danymi dokumentu (513)
    • Zalety klas CCmdTarget oraz CDocItem (516)
  • Znaczenie funkcji InitInstance dla dokumentów (518)
    • W jaki sposób aplikacja zarządza dokumentami i widokami (519)
    • Klasa CSingleDocTemplate (519)
    • Okna ramek (520)
    • Zasoby wzorców dokumentów (520)
    • W jaki sposób zasób łańcucha wpływa na wzorzec dokumentu (521)
    • Podział zasobu łańcucha (522)
    • Przegląd standardowych zasobów widoków (523)
    • Czas życia wzorca dokumentu (524)
    • Zaawansowane posługiwanie się wzorcami (525)
    • Praca z kilkoma wzorcami (525)
    • Niszczenie wzorców dodanych funkcją składową AddDocTemplate() (527)
  • Wykorzystanie klasy CView (528)
    • Deklarowanie klasy widoku (528)
    • Funkcje składowe klasy CView (529)
    • Widoki a komunikaty (531)
    • Warianty klasy okna wyprowadzone z klasy CView (532)
    • Aplikacje oparte na klasie CFormView i aplikacje okien dialogowych (533)
    • Powrót do okien ramki (533)
    • Znaczenie funkcji AfxGetMainWnd() (534)
  • Aplikacja jednodokumentowa HexView (535)
  • Podsumowanie (541)
Rozdział 20. Układ aplikacji MDI (543)
  • Ponowny przegląd modelu dokument-widok (544)
  • Ponowny przegląd klasy CDocument (546)
  • Zarządzanie bardziej złożonymi kombinacjami dokumentów, widoków i ramek (547)
    • Praca z kilkoma rodzajami dokumentów (547)
    • Użycie kilku rodzajów widoków dokumentu (548)
    • Klasa CMDIFrameWnd (550)
    • Klasa CMDIChildWnd (551)
    • Klasa CMultiDocTemplate (553)
    • Narzut związany z użyciem klasy CDocument (554)
    • Dalsze właściwości aplikacji MDI (554)
  • Program PaintObj (555)
  • Dzielone okna (562)
    • Różnice pomiędzy dzielonymi oknami (563)
    • Specyfika klasy CSplitterWnd (564)
    • Dodatkowe uwagi na temat dynamicznych okien dzielonych (566)
    • Użycie różnych widoków w dynamicznych panelach (567)
    • Użycie obiektu CRuntimeClass (568)
    • Użycie okien dzielonych z widokami powiązanymi z więcej niż jednym dokumentem (569)
    • Użycie statycznych okien dzielonych (570)
    • Tworzenie statycznego okna dzielonego (570)
    • Wspólne paski przewijania (571)
    • Wyznaczanie rozmiaru aktualnego i idealnego (572)
    • Wydajność okien dzielonych (573)
  • Program Dynsplit (573)
  • Subclassing okien potomnych (578)
    • Subclassing okien z pomocą MFC (579)
    • Alternatywy dla architektury dokument-widok (580)
  • Podsumowanie (581)
Rozdział 21. Wydruk i podgląd wydruku (583)
  • Obsługa wydruku wbudowana w API Windows (584)
    • Informacje o drukarce (587)
    • Znaczenie charakterystyki tekstu (588)
  • Przykład drukowania z użyciem API Windows (589)
  • Drukowanie w MFC (591)
    • Podział ról przy drukowaniu (591)
    • Sekwencja wydruku w MFC (592)
    • Dalszy wgląd w domyślny proces drukowania w MFC (595)
    • Protokół wydruku (596)
    • Przesłanianie funkcji klasy widoku (596)
    • Klasa CPrintInfo (598)
    • Strony wydruku a strony dokumentu (598)
    • Implementacja podziału na strony (paginacji) (599)
    • Dodanie funkcji pomocniczych (601)
    • Paginacja w czasie wydruku (604)
    • Powrót do drukowanie nagłówków i stopek (604)
    • Alokowanie zasobów GDI dla wydruku (605)
    • Powiększanie drukowanego obrazu (606)
  • Architektura podglądu wydruku (606)
    • Proces podglądu wydruku (607)
    • Modyfikowanie podglądu wydruku (607)
    • Rozszerzanie podglądu wydruku w aplikacji (608)
    • Klasa CPrintDialog (610)
  • Program HexViewMDI (611)
  • Podsumowanie (615)
Rozdział 22. MFC i elementy zaawansowanego interfejsu użytkownika (617)
  • Czasem potrzeba większej kontroli (618)
  • Pętla modalna (619)
  • Wnętrze funkcji RunModalLoop() (619)
  • Parametry pętli modalnej (622)
  • Przerywanie pętli modalnej (623)
  • Tworzenie modalnej aplikacji (623)
  • Tworzenie i zamykanie okna modalnego (624)
    • Dodawanie funkcji obsługi (624)
    • Prosta modalna aplikacja (627)
  • Dalsza rozbudowa modalnego okna (628)
  • Rysowanie przezroczystej bitmapy na przezroczystym obszarze roboczym (632)
    • Wyświetlanie bitmapy (633)
    • Wyznaczenie miejsca wklejenia bitmapy (636)
    • Zgodne konteksty urządzeń (637)
    • Struktura BITMAP (638)
    • Składanie wszystkiego razem (640)
    • Ograniczenie obszaru kliknięcia (642)
  • Podsumowanie (643)
Rozdział 23. Paski stanu i paski narzędzi (645)
  • Tworzenie i wykorzystywanie pasków stanu (646)
    • Tworzenie paska stanu (646)
    • Dostosowywanie pasków stanu (647)
  • Tworzenie i kontrolowanie pasków narzędzi (651)
    • Paski kontrolek MFC (651)
    • Tworzenie i inicjowanie paska narzędzi (652)
  • Korzystanie z kontrolek ReBar (657)
  • Podsumowanie (658)
Rozdział 24. Kontrolka widoku drzewa i kontrolka widoku listy (659)
  • CTreeCtrl (660)
    • Podstawy kontrolki widoku drzewa (661)
    • Klasa CTreeCtrl (662)
    • Program demonstracyjny CTreeCtrlDemo (670)
  • CListCtrl (675)
    • Podstawy kontrolki widoku listy (675)
    • Klasa CListCtrl (676)
  • Podsumowanie (681)
Rozdział 25. Wątki (683)
  • Wątki (684)
    • Tworzenie wątków roboczych (685)
    • Funkcja wątku (687)
    • Tworzenie wątków interfejsu użytkownika (687)
    • Wstrzymywanie i wznawianie wątków (688)
    • Usypianie wątków (689)
    • Kończenie działania wątku (689)
    • Kończenie działania wątku z wnętrza innego wątku (690)
    • Wątki, procesy i priorytety (693)
    • Klasy priorytetu procesu (695)
  • Dzielenie obiektów MFC pomiędzy wątkami (695)
  • Używanie funkcji biblioteki czasu wykonania C w aplikacjach wielowątkowych (698)
  • Program ThreadDemo1 (699)
  • Podsumowanie (703)
Część IV Programowanie baz danych
Rozdział 26. ODBC (707)
  • Terminologia związana z ODBC i bazami danych (708)
  • ODBC - potrzeba standardu (710)
    • Standard ODBC (710)
    • Poziomy zgodności ODBC API (711)
    • Poziomy zgodności ODBC SQL (712)
  • ODBC - implementacja (713)
    • Konfigurowanie ODBC (713)
    • Łączenie się ze źródłem danych (715)
    • Pobieranie informacji o źródle danych (716)
    • Przygotowywanie i wykonywanie poleceń SQL (716)
    • Pobieranie danych (717)
    • Odłączanie się od źródła danych (718)
  • Użycie ODBC do pobierania danych (719)
    • Dodawanie obsługi ODBC do projektu Visual C++ (720)
    • Modyfikowanie okna dialogowego programu (720)
    • Dodawanie kodu inicjalizacji i dostępu do bazy danych (721)
  • Użycie ODBC do dynamicznego odpytywania źródła danych (727)
    • Deklaracja klasy CODBCDynamic (727)
    • Działanie klasy CODBCDynamic (729)
    • Użycie klasy CODBCDynamic (734)
  • Podsumowanie (735)
Rozdział 27. Klasy baz danych MFC (737)
  • Klasa CDatabase (738)
    • Klasa CRecordset (741)
    • Konstruowanie rekordsetu (745)
    • Otwieranie rekordsetu (746)
    • Odczyt i zapis danych z użyciem RFX (746)
    • Filtrowanie rekordów (747)
    • Sortowanie rekordów zwróconych przez rekordset (749)
    • Poruszanie się w zestawie wyników (750)
    • Zapisywanie rekordów (751)
    • Usuwanie rekordów (751)
  • Użycie klas baz danych MFC (752)
    • Dodanie obsługi klas baz danych MFC (752)
    • Tworzenie interfejsu użytkownika dla programu demonstracyjnego (752)
    • Dodawanie klasy pomocniczej reprezentującej dane użytkownika (753)
    • Tworzenie klasy rekordsetu dla tabeli UserMaster (754)
    • Modyfikowanie pliku nagłówkowego dialogu (754)
    • Modyfikowanie pliku implementującego dialog (754)
  • Parametryzowane rekordsety i kwerendy (761)
    • Tworzenie interfejsu użytkownika dla programu (761)
    • Tworzenie klasy rekordsetu dla tabeli UserMaster (763)
    • Modyfikowanie klasy CRecordset, tak aby akceptowała parametry (763)
    • Dodawanie możliwości wyszukiwania (763)
    • Budowanie aplikacji (765)
    • Tworzenie parametryzowanych kwerend (765)
    • Demonstracyjna baza danych (766)
    • Tworzenie rekordsetu uprawnień (767)
  • Podsumowanie (770)
Rozdział 28. Programowanie baz danych z użyciem DAO (771)
  • Podstawy DAO (772)
    • Historia DAO (772)
    • Hierarchia DAO (774)
    • Interfejsy DAO (778)
  • Użycie klas MFC DAO (779)
    • Klasa CDaoDatabase (780)
    • Klasa CDaoWorkspace (782)
    • Klasa CDaoRecordset (783)
  • Program demonstrujący użycie MFC DAO (793)
    • Tworzenie demonstracyjnego projektu (793)
    • Tworzenie interfejsu użytkownika dla programu demonstracyjnego (794)
    • Dodawanie klasy pomocniczej reprezentującej dane użytkownika (795)
    • Tworzenie klasy rekordsetu dla tabeli UserMaster (795)
    • Modyfikowanie pliku nagłówkowego dialogu (795)
    • Modyfikowanie pliku implementującego dialog (796)
    • Testowanie aplikacji DaoUserMaintenance (803)
  • Podsumowanie (804)
Część V Rozszerzanie aplikacji
Rozdział 29. Praca z bibliotekami DLL (807)
  • Podstawy bibliotek DLL (808)
    • Biblioteki dynamiczne i statyczne (808)
    • Ładowanie bibliotek DLL (809)
  • Zwykłe biblioteki DLL w Visual C++ (810)
    • Wewnętrzne działanie zwykłych bibliotek DLL (811)
    • Dynamiczne ładowanie DLL-i (813)
    • Przykłady sytuacji wymagających dynamicznego ładowania bibliotek DLL (813)
    • Haki Windows (815)
    • Globalne obiekty C++ w bibliotekach DLL (822)
  • Biblioteki DLL rozszerzeń MFC (829)
    • Działanie bibliotek DLL rozszerzeń MFC (829)
    • Eksportowanie klas przez biblioteki rozszerzeń MFC (830)
    • Makro AFX_EXT_CLASS (831)
    • Użycie zagnieżdżonych bibliotek rozszerzeń MFC (831)
    • Eksportowanie zasobów (832)
    • Pisanie demonstracyjnej biblioteki DLL rozszerzeń MFC zawierającej dokumenty i widoki (832)
  • Podsumowanie (837)
Rozdział 30. Uzupełnianie programów o wyświetlanie obrazków (839)
  • Biblioteki tworzone przez osoby trzecie (840)
  • Przegląd biblioteki ImageObject (843)
    • Format pliku BMP (844)
    • Format pliku GIF (845)
    • Format pliku JPEG (845)
    • Format pliku PCX (845)
    • Format pliku TGA (845)
    • Format pliku TIF (846)
  • Ładowanie obrazków (846)
  • Wyświetlanie obrazków (847)
  • Program Display (850)
  • Skalowanie, obcinanie i zmiana głębokości koloru (852)
  • Tworzenie obrazka z kontekstu urządzenia (854)
  • Tworzenie obrazu ze schowka (854)
  • Zapisywanie obrazków (855)
  • Przetwarzanie obrazów (857)
  • Program ProcessImage (860)
  • Podsumowanie (867)
Część VI Programowanie modelu COM
Rozdział 31. Wprowadzenie do ActiveX i projektowania kontrolek ActiveX (871)
  • Pochodzenie i zastosowanie ActiveX (872)
  • Różne technologie ActiveX (874)
    • Serwery automatyzacji (874)
    • Sterowniki automatyzacji (874)
    • Kontrolki ActiveX (875)
    • Obiekty COM (875)
    • Dokumenty ActiveX (876)
    • Kontenery ActiveX (877)
  • Do czego możesz wykorzystać ActiveX (877)
  • Jaki rodzaj komponentu ActiveX jest Ci potrzebny? (878)
    • Użycie serwerów i sterowników automatyzacji (879)
    • Użycie kontrolek ActiveX (880)
    • Używanie obiektów COM (880)
    • Tworzenie komponentów ActiveX z użyciem MFC (881)
    • Użycie biblioteki ATL do tworzenia komponentów ActiveX (882)
    • Użycie biblioteki BaseControl do tworzenia komponentów ActiveX (883)
    • Tworzenie własnej biblioteki (884)
  • Podstawy architektury komponentów ActiveX (884)
    • Serwery automatyzacji ActiveX (885)
    • Kontrolki ActiveX (886)
  • Narzędzia wymagane do tworzenia komponentów ActiveX (887)
    • Kompilator MIDL (887)
    • Mktyplib (887)
    • GUIDGEN (888)
    • RegEdit (888)
    • Serwer rejestracji (888)
    • Ole2View (888)
    • Dodawanie narzędzi do środowiska programowego Visual C++ (889)
  • Użycie MFC do tworzenia prostej kontrolki ActiveX (889)
    • Tworzenie podstawowego projektu kontrolki (890)
    • Rejestracja kontrolki (893)
    • Tworzenie metod (894)
    • Właściwości (900)
  • Rysowanie kontrolki (912)
    • Rysowanie standardowe (912)
  • Podsumowanie (914)
Rozdział 32. Tworzenie serwerów automatyzacji ActiveX z użyciem MFC (917)
  • Tworzenie podstawowego projektu (918)
    • Dodawanie do aplikacji interfejsu automatyzacji (919)
    • Rejestrowanie serwera (923)
    • Tworzenie roboczego kodu serwera (924)
    • Dodawanie metod (927)
    • Dodawanie właściwości do serwera (932)
  • Generowanie wyjątków OLE (933)
  • Serwery o podwójnym interfejsie (939)
    • Generowanie wyjątków OLE podwójnego interfejsu (947)
  • Tworzenie obiektu serwera w programie C++ (952)
    • Częste problemy związane z tworzeniem serwerów OLE poprzez C++ (954)
    • Tworzenie dzielonych serwerów (954)
    • Serwer w pojedynczym egzemplarzu (958)
  • Podsumowanie (959)
Rozdział 33. Active Template Library (961)
  • Przegląd biblioteki ATL (961)
  • Tworzenie kontrolki ATL (963)
  • Dodanie obiektu COM do projektu (964)
  • Modyfikowanie pliku nagłówkowego klasy CDoublePend (965)
  • Implementowanie funkcji interfejsu (967)
  • Używanie kontroli w C++ (971)
  • Typy danych (973)
    • Zamiana na typ BSTR i z typu BSTR (973)
    • Porównywanie łańcuchów BSTR (974)
    • Przeglądanie zawartości łańcucha BSTR w debuggerze (975)
  • Osadzanie kontrolek ActiveX na stronach WWW (975)
  • Podsumowanie (976)
Część VII Internet i programowanie HTML
Rozdział 34. Programowanie dla Internetu (979)
  • Klasa CInternetSession (980)
  • Klasa CFtpConnection (981)
    • Pobieranie pliku z serwera FTP (984)
    • Wysyłanie pliku do serwera FTP (988)
    • Inne funkcje FTP (988)
    • Klasa CInternetFile (990)
    • Klasa CFtpFileFind (991)
  • Program FTP (991)
  • Gniazda i klasa CSocket (998)
    • Tworzenie gniazd (999)
    • Łączenie się z gniazdem (1000)
    • Nasłuchiwanie połączenia (1001)
    • Odczyt i zapis danych (1002)
  • Program Sockets (1003)
  • Program SendEmail (1009)
  • Pobieranie pliku HTTP (1014)
  • Program AutoDialer (1015)
  • Podsumowanie (1017)
Rozdział 35. Klasa CHtmlView (1019)
  • Tworzenie projektu CHtmlView (1020)
  • Zamiana projektów na projekty korzystające z klasy CHtmlView (1021)
  • Nawigowanie w widoku CHtmlView (1022)
  • Program SimpleBrowser (1024)
  • Program MultiBrowser (1026)
  • Bezpośrednie wykorzystanie kontrolki Web Browser (1030)
  • Tworzenie przeglądarki prowadzącej dziennik nawigacji (1031)
  • Tworzenie przeglądarki blokującej witryny WWW (1032)
  • Podsumowanie (1033)
Rozdział 36. Dynamic HTML (1035)
  • Podstawy HTML (1036)
  • Arkusze stylów (1038)
    • Globalne arkusze stylów (1041)
    • Składnia arkusza stylu (1042)
  • Prosta przeglądarka plików (1042)
  • Modele obiektów i zdarzeń (1044)
  • Skrypty (1047)
  • Skrypty dla elementów (1048)
  • Zmiana innych elementów niż elementy tekstowe (1051)
  • Uruchamianie skryptu podczas ładowania dokumentu (1052)
  • Tworzenie dialogów w skryptach (1056)
  • Podsumowanie (1058)
Część VIII Zaawansowane korzystanie z Visual Studia
Rozdział 37. Skrypty w Visual Studio (1061)
  • Makra w Visual Studio (1062)
    • Szybkie makra (1062)
  • Tworzenie makr VBScriptu (1064)
    • Kod makr VBScriptu (1066)
    • Edycja makra VBScriptu (1066)
    • Tworzenie pustego makra (1067)
  • Użycie makr VBScriptu (1069)
    • Ładowanie plików makr (1069)
    • Uruchamianie makr VBScriptu (1070)
  • VBScript (1072)
    • Programowanie VBScriptu (1073)
    • Używanie zmiennych (1073)
    • Używanie stałych (1074)
    • Używanie funkcji i procedur (1074)
  • Model obiektów Visual Studia (1074)
    • Dostęp do obiektów (1074)
    • Użycie obiektu Application (1075)
  • Przykładowa aplikacja (1078)
    • Uruchamianie przykładowego makra (1078)
    • Działanie przykładowego makra (1080)
  • Podsumowanie (1087)
Rozdział 38. Tworzenie własnego AppWizarda (1089)
  • Działanie AppWizarda (1090)
    • Menedżer AppWizarda (1090)
    • Słownik oraz klasa CCustomAppWiz (1091)
  • Tworzenie własnego AppWizarda (1094)
  • Przykład definiowania domyślnych ustawień projektu (1096)
    • Tworzenie demonstracyjnego projektu kreatora SDIAutomationWiz (1096)
    • Definiowanie klasyCCustomAppWiz (1096)
    • Słowniki makr (1098)
  • Bardziej zaawansowany własny AppWizard (1099)
    • Dodawanie własnego okna dialogowego (1099)
    • Tworzenie własnych plików wzorcowych (1101)
    • Zmiana pliku newproj.inf (1103)
    • Zmiana plików ClassWizarda (1105)
    • Zmiana plików wzorcowych AppWizarda (1105)
    • Zmiana pliku CONFIRM.INF (1109)
    • Użycie Rejestru do utrwalenia makr (1110)
    • Modyfikowanie klasy CAboutWizAppWiz tak, aby używała Rejestru (1110)
  • Podsumowanie (1113)
Dodatek A. Zawartość płytki CD-ROM (1117)
Skorowidz (1139)
Na CD-ROM-ie (1140)