
Dzięki tej książce:
- Nauczysz się użytkować środowisko Visual C++, aby szybko i sprawnie tworzyć własne aplikacje
- Opanujesz metody użytkowania wszystkich obiektów kontrolnych okien
- Będziesz pracował z klasami bazowymi firmy Microsoft (MFC)
- Nauczysz się budować swoje własne klasy i moduły
- Będziesz tworzył i organizował swoje własne obiekty kontrolne typu ActiveX
- Nauczysz się tworzenia efektywnych aplikacji obsługujących bazy danych, przy użyciu obiektów technologii ActiveX (ADO), OLE DB i ODBC
- Odkryjesz proste i efektywne metody programowania zorientowanego na Internet.
O Autorach (17)Wprowadzenie (21)
- Kompozycja książki (22)
- Konwencje przyjęte w książce (22)
Ogólne spojrzenie (27)
Rozdział 1. Środowisko Visual C++ - Twoja pierwsza samodzielna aplikacja (29)
- Środowisko programisty Visual C++ (30)
- Obszar roboczy (30)
- Obszar komunikacji z użytkownikiem (31)
- Obszar edycji (31)
- Paski menu (31)
- Studio programisty - zmiana wyglądu środowiska (31)
- Twój pierwszy projekt (32)
- Tworzenie nowego projektu (33)
- Kreator aplikacji - tworzenie struktury aplikacji (34)
- Projektowanie okna aplikacji (36)
- Dodawanie kodu źródłowego do aplikacji (38)
- Końcowe dodatki (41)
- Tworzenie ikony programu (41)
- Dodawanie przycisków maksymalizacji i minimalizacji (42)
- Podsumowanie (43)
- Pytania i odpowiedzi (43)
- Warsztat (44)
- Quiz (44)
- Ćwiczenie (44)
- Podstawowe obiekty kontrolne Windows (45)
- Tekst statyczny (46)
- Pole tekstowe (46)
- Przycisk polecenia (46)
- Pole wyboru (47)
- Przycisk opcji (47)
- Pole listy (pole kombi) (47)
- Dodawanie obiektów kontrolnych do okna aplikacji (47)
- Tworzenie struktury aplikacji, ułożenie obiektów kontrolnych (48)
- Ustalenie porządku poruszania się zgodnego z klawiszem Tab (50)
- Dołączanie zmiennych do obiektów kontrolnych (51)
- Przypisywanie obiektom kontrolnym zasad funkcjonowania (53)
- Zamykanie aplikacji (56)
- Wyświetlanie wiadomości użytkownika (56)
- Czyszczenie pola tekstowego (58)
- Wyłączanie dostępu i ukrywanie obiektów kontrolnych (58)
- Podsumowanie (63)
- Pytania i odpowiedzi (64)
- Warsztat (64)
- Quiz (65)
- Ćwiczenia (65)
- Zdarzenia wywołane przy pomocy myszy (67)
- Rysowanie myszą (68)
- Ulepszanie programu rysunkowego (73)
- Końcowe dodatki (75)
- Przechwytywanie zdarzeń związanych z klawiaturą (76)
- Zmiana kształtu kursora (76)
- Utrwalenie zmiany kształtu kursora (79)
- Podsumowanie (83)
- Pytania i odpowiedzi (84)
- Warsztat (84)
- Quiz (85)
- Ćwiczenia (85)
- Timery systemu Windows (87)
- Umieszczenie zegara w oknie aplikacji (88)
- Utworzenie projektu i aplikacji (88)
- Dodawanie identyfikatorów timerów (89)
- Uruchomienie timera obsługującego zegar (91)
- Obsłużenie komunikatu związanego z timerem zegara (92)
- Dodanie drugiego timera do aplikacji (93)
- Dodanie zmiennych do aplikacji (93)
- Uruchamianie i zatrzymywanie timera (95)
- Udostępnianie przycisku Stop (98)
- Podsumowanie (100)
- Pytania i odpowiedzi (100)
- Warsztat (101)
- Quiz (101)
- Ćwiczenia (101)
- Używanie predefiniowanych okien dialogowych Windows (104)
- Używanie okien informacyjnych (104)
- Użycie predefiniowanych okien dialogowych (109)
- Tworzenie własnych okien dialogowych (112)
- Tworzenie okna dialogowego (112)
- Użycie niestandardowego okna dialogowego w aplikacji (116)
- Podsumowanie (120)
- Pytania i odpowiedzi (121)
- Warsztat (122)
- Quiz (123)
- Ćwiczenia (123)
- Menu (125)
- Style menu (126)
- Menu z systemem klawiszy skrótów (126)
- Konwencje i standardy systemów menu (127)
- Projektowanie menu (127)
- Tworzenie menu (128)
- Utworzenie aplikacji (128)
- Dodawanie i projektowanie menu (129)
- Dołączanie menu do okna aplikacji (131)
- Programowanie pól menu (132)
- Tworzenie menu kontekstowego (135)
- Tworzenie menu z klawiszami przyśpieszającymi (137)
- Podsumowanie (138)
- Pytania i odpowiedzi (138)
- Warsztat (139)
- Quiz (139)
- Ćwiczenia (139)
- Odnajdywanie i używanie czcionek (141)
- Tworzenie listy dostępnych czcionek (142)
- Użycie czcionki (144)
- Użycie czcionek w aplikacji (149)
- Tworzenie podstawowej struktury aplikacji (149)
- Budowanie listy czcionek (150)
- Ustawianie przykładowego tekstu (154)
- Wybieranie czcionki dla obszaru prezentacji (156)
- Podsumowanie (158)
- Pytania i odpowiedzi (158)
- Warsztat (160)
- Quiz (160)
- Ćwiczenia (160)
CZĘŚĆ II (163)
Ogólne spojrzenie (165)
Rozdział 8. Integrowanie grafiki z programem (167)
- Interfejs urządzenia graficznego (167)
- Konteksty urządzeń (168)
- Tryby mapowania i systemy koordynacji (173)
- Tworzenie aplikacji graficznej (174)
- Generowanie podstawowej struktury aplikacji (174)
- Dodawanie możliwości graficznych (179)
- Podsumowanie (193)
- Pytania i odpowiedzi (193)
- Warsztat (193)
- Quiz (194)
- Ćwiczenia (194)
- Czym jest kontrolka ActiveX? (195)
- Technologia ActiveX i interfejs IDispatch (196)
- Pojemniki i serwery ActiveX (197)
- Dodawanie kontrolki ActiveX do projektu (198)
- Rejestrowanie kontrolki (199)
- Dodawanie kontrolki do okna dialogowego (201)
- Użycie kontrolki ActiveX w aplikacji (202)
- Współdziałanie z kontrolką (203)
- Reagowanie na zdarzenia generowane przez kontrolkę (208)
- Podsumowanie (211)
- Pytania i odpowiedzi (211)
- Warsztat (212)
- Quiz (212)
- Ćwiczenie (212)
- Architektura Dokument/Widok (213)
- Tworzenie aplikacji SDI (215)
- Budowanie podstawowej struktury aplikacji (216)
- Tworzenie klasy linii (216)
- Implementowanie funkcjonalności dokumentu (219)
- Prezentacja danych na ekranie (222)
- Zapisywanie i odczytywanie rysunku (226)
- Usuwanie bieżącego rysunku (227)
- Zapisywanie i odczytywanie rysunku (228)
- Współdziałanie z systemem menu (230)
- Dodawanie koloru do klasy CLinia (231)
- Dodawanie koloru do dokumentu (232)
- Modyfikacja Menu (235)
- Podsumowanie (239)
- Pytania i odpowiedzi (239)
- Warsztat (240)
- Quiz (241)
- Ćwiczenie (241)
- Czym jest aplikacja MDI? (243)
- Tworzenie programu graficznego typu MDI (245)
- Budowanie podstawowej struktury aplikacji (245)
- Budowanie funkcjonalności graficznej (246)
- Dodawanie funkcjonalności menu (246)
- Dodawanie menu kontekstowego (250)
- Podsumowanie (252)
- Pytania i odpowiedzi (253)
- Warsztat (253)
- Quiz (254)
- Ćwiczenie (254)
- Paski narzędzi, stanu i menu (255)
- Projektowanie paska narzędzi (256)
- Tworzenie nowego paska narzędzi (258)
- Dołączanie paska narzędzi do ramki okna aplikacji (259)
- Kontrolowanie widoczności paska narzędzi (266)
- Dodawanie pola kombi do paska narzędzi (268)
- Edytowanie zasobów projektu (268)
- Tworzenie pola kombi dla paska narzędzi (271)
- Obsługiwanie zdarzeń generowanych przez obiekt kombi (278)
- Uaktualnianie obiektu kombi umieszczonego na pasku narzędzi (279)
- Dodawanie nowego elementu paska stanu (281)
- Dodawanie nowego obszaru paska stanu (282)
- Ustawianie tekstu wyświetlanego w obszarze paska stanu (283)
- Podsumowanie (285)
- Pytania i odpowiedzi (286)
- Warsztat (287)
- Quiz (287)
- Ćwiczenia (288)
- Serializacja (289)
- Klasy CArchive i CFile (289)
- Funkcja Serialize (290)
- Czynienie obiektów zdolnymi do serializacji (291)
- Implementowanie klasy serializowalnej (293)
- Tworzenie aplikacji serializowanej (294)
- Tworzenie klasy serializowalnej (297)
- Budowanie funkcjonalności aplikacji w klasie dokumentu (303)
- Dodawanie możliwości nawigacyjnych i edycyjnych do klasy widoku (313)
- Podsumowanie (319)
- Pytania i odpowiedzi (319)
- Warsztat (321)
- Quiz (321)
- Ćwiczenie (321)
- Dostęp do baz danych i ODBC (323)
- Interfejs ODBC (Open Database Connector) (324)
- Klasa CRecordset (325)
- Tworzenie bazy danych z wykorzystaniem ODBC (330)
- Przygotowanie bazy danych (330)
- Tworzenie podstawowej struktury aplikacji (332)
- Projektowanie głównego formularza (333)
- Dodawanie nowych rekordów (339)
- Usuwanie rekordów (341)
- Podsumowanie (343)
- Pytania i odpowiedzi (343)
- Warsztat (344)
- Quiz (344)
- Ćwiczenie (344)
CZĘŚĆ III (349)
Ogólne spojrzenie (351)
Rozdział 15. Dodawanie i uaktualnianie rekordów w bazie danych poprzez mechanizm ADO (353)
- Co to jest ADO? (354)
- Obiekty ADO (354)
- Korzystanie z kontrolki ActiveX typu ADO (356)
- Importowanie biblioteki DLL zawierającej elementy ADO (358)
- Podłączanie się do bazy danych (359)
- Wykonywanie poleceń i odbieranie danych (360)
- Poruszanie się po obiekcie typu Recordset (362)
- Dostęp do wartości pól (362)
- Uaktualnianie rekordów (365)
- Dodawanie i usuwanie (366)
- Zamykanie obiektów Recordset i Connection (366)
- Budowanie aplikacji bazy danych z wykorzystaniem ADO (367)
- Tworzenie podstawowej struktury aplikacji (367)
- Budowanie własnej klasy rekordu (370)
- Poruszanie się po elementach danych (373)
- Wypełnianie formularza (376)
- Zapisywanie zmian (378)
- Poruszanie się po zbiorze rekordów (379)
- Dodawanie nowych rekordów (381)
- Usuwanie rekordów (383)
- Podsumowanie (384)
- Pytania i odpowiedzi (384)
- Warsztat (385)
- Quiz (385)
- Ćwiczenie (385)
- Projektowanie klas (387)
- Kapsułkowanie (388)
- Dziedziczenie (388)
- Typy klas w Visual C++ (389)
- Tworzenie modułów bibliotecznych (390)
- Używanie modułów bibliotecznych (391)
- Tworzenie modułu bibliotecznego (391)
- Tworzenie aplikacji testowej (400)
- Uaktualnianie modułu bibliotecznego (404)
- Podsumowanie (407)
- Pytania i odpowiedzi (408)
- Warsztat (408)
- Quiz (409)
- Ćwiczenie (409)
- Po co tworzyć biblioteki DLL? (412)
- Tworzenie i użytkowanie bibliotek DLL (412)
- Projektowanie bibliotek DLL (415)
- Tworzenie i użytkowanie bibliotek DLL z rozszerzeniem MFC (415)
- Tworzenie bibliotek DLL z rozszerzeniem MFC (416)
- Adaptowanie aplikacji testowej (419)
- Zmiany w bibliotece DLL (420)
- Tworzenie i użytkowanie regularnych bibliotek DLL (422)
- Tworzenie regularnej biblioteki DLL (422)
- Adaptowanie aplikacji testowej (428)
- Podsumowanie (431)
- Pytania i odpowiedzi (432)
- Warsztat (433)
- Quiz (433)
- Ćwiczenia (434)
- Co to jest wielozadaniowość? (435)
- Wykonywanie wielu zadań w tym samym czasie (436)
- Wątki realizowane w czasie wolnym (436)
- Tworzenie niezależnych wątków (437)
- Tworzenie ramy aplikacji (446)
- Projektowanie wirujących okręgów (448)
- Dodawanie elementów wspierających wirujące koła (454)
- Dodawanie zadań do funkcji OnIdle (460)
- Dodawanie niezależnych wątków (465)
- Podsumowanie (472)
- Pytania i odpowiedzi (473)
- Warsztat (475)
- Quiz (475)
- Ćwiczenia (476)
- Czym jest kontrolka ActiveX? (477)
- Właściwości (478)
- Metody (479)
- Zdarzenia (480)
- Tworzenie kontrolki ActiveX (480)
- Budowanie powłoki kontrolki (480)
- Modyfikacja klasy CModArt (482)
- Dodawanie właściwości (484)
- Projektowanie i budowa okna właściwości (486)
- Dodawanie podstawowej funkcjonalności kontrolki (488)
- Dodawanie metod (490)
- Dodawanie zdarzeń (492)
- Testowanie kontrolki (494)
- Podsumowanie (496)
- Pytania i odpowiedzi (496)
- Warsztat (496)
- Quiz (497)
- Ćwiczenia (497)
- W jaki sposób działa komunikacja sieciowa? (500)
- Gniazda, porty i adresy (501)
- Tworzenie gniazda (502)
- Tworzenie połączenia (503)
- Nadawanie i odbieranie komunikatów (504)
- Zamykanie połączenia (506)
- Zdarzenia gniazda (506)
- Wykrywanie błędów (507)
- Budowa aplikacji sieciowej (508)
- Tworzenie powłoki aplikacji (508)
- Układ okna aplikacji i funkcjonalność startowa (508)
- Dziedziczenie z klasy CAsyncSocket (512)
- Połączenie z aplikacją (514)
- Wysyłanie i odbieranie komunikatów (517)
- Kończenie połączenia (520)
- Podsumowanie (521)
- Pytania i odpowiedzi (522)
- Warsztat (522)
- Quiz (523)
- Ćwiczenia (523)
- Model obiektu ActiveX Explorer (526)
- Klasa CHtmlView (527)
- Poruszanie się po sieci (527)
- Kontrolowanie przeglądarki (528)
- Pobieranie stanu przeglądarki (528)
- Budowa aplikacji przeglądarki sieciowej (528)
- Tworzenie powłoki aplikacji (528)
- Dodawanie możliwości nawigacji (529)
- Podsumowanie (538)
- Pytania i odpowiedzi (539)
- Warsztat (539)
- Quiz (539)
- Ćwiczenia (540)
Dodatki (545)
Dodatek A. Przegląd C++ (547)
- Pierwsza aplikacja (547)
- Pozdrowienia.cpp (548)
- Funkcje i zmienne (552)
- Wyrażenie if, operatory i polimorfizm (555)
- Zmienne globalne i lokalne (557)
- Wskaźniki (559)
- Referencje (562)
- Klasy (564)
- Konstruktory i destruktory (568)
- Dziedziczenie (574)
- Podsumowanie (581)
- Rozdział 1. (583)
- Quiz (583)
- Ćwiczenie (584)
- Rozdział 2. (584)
- Quiz (584)
- Ćwiczenia (585)
- Rozdział 3. (588)
- Quiz (588)
- Ćwiczenia (589)
- Rozdział 4. (593)
- Quiz (593)
- Ćwiczenie (594)
- Rozdział 5. (595)
- Quiz (595)
- Ćwiczenia (596)
- Rozdział 6. (598)
- Quiz (598)
- Ćwiczenia (599)
- Rozdział 7. (600)
- Quiz (600)
- Ćwiczenia (600)
- Rozdział 8. (603)
- Quiz (603)
- Ćwiczenia (604)
- Rozdział 9. (606)
- Quiz (606)
- Ćwiczenie (606)
- Rozdział 10. (607)
- Quiz (607)
- Ćwiczenie (608)
- Rozdział 11. (613)
- Quiz (613)
- Ćwiczenie (614)
- Rozdział 12. (616)
- Quiz (616)
- Ćwiczenia (617)
- Rozdział 13. (618)
- Quiz (618) Ćwiczenie (619)
- Rozdział 14. (622)
- Quiz (622)
- Rozdział 15. (625)
- Quiz (625)
- Ćwiczenie (626)
- Rozdział 16. (627)
- Quiz (627)
- Ćwiczenie (627)
- Rozdział 17. (628)
- Quiz (628)
- Ćwiczenia (629)
- Rozdział 18. (630)
- Quiz (630)
- Ćwiczenia (631)
- Rozdział 19. (633)
- Quiz (633)
- Ćwiczenia (634)
- Rozdział 20. (635)
- Quiz (635)
- Ćwiczenia (635)
- Rozdział 21. (637)
- Quiz (637)
- Ćwiczenia (637)
- Korzystanie z wbudowanego wsparcia (641)
- Korzystanie z wbudowanego wsparcia dla drukowania (641)
- Przesłanianie funkcji OnPrint() (645)
- Korzystanie z kontekstu urządzenia drukarki (647)
- Utrzymywanie współczynnika proporcjonalności (648)
- Numerowanie i orientacja stron (651)
- Ustawianie strony początkowej i końcowej (651)
- Korzystanie z okna dialogowego drukowania (655)
- Pozioma i pionowa orientacja papieru (658)
- Dodawanie obiektów GDI do funkcji OnBeginPrinting() (658)
- Modyfikowanie tworzonego kontekstu urządzenia (660)
- Przerywanie procesu drukowania (661)
- Drukowanie bez korzystania z wbudowanego wsparcia wydruku (661)
- Bezpośrednie przywoływanie okna dialogowego drukowania (661)
- Korzystanie z funkcji StartDoc() i EndDoc() (663)
- Korzystanie z funkcji StartPage() i EndPage() (664)
- Stosowanie wyjątków (665)
- Wykonywanie programu i wyłapywanie błędów (665)
- Rzucanie wyjątków (670)
- Usuwanie wyjątków (671)
- Typy wyjątków MFC (671)
- Korzystanie z klasy podstawowej CException (672)
- Stosowanie wyjątku pamięci (673)
- Stosowanie wyjątków zasobów (673)
- Stosowanie wyjątków plików i archiwów (674)
- Stosowanie wyjątków baz danych (676)
- Stosowanie wyjątków OLE (677)
- Stosowanie wyjątków niestandardowych (678)
- Stosowanie wyjątków użytkownika (678)
- Generowanie własnych klas wyjątków (678)
- Tworzenie informacji w trakcie procesu wykrywania błędów (681)
- Stosowanie trybów Debug i Release (681)
- Ustawianie opcji i poziomów wykrywania błędów (683)
- Tworzenie i korzystanie z informacji przeglądania (685)
- Zdalny debugging oraz wykrywanie błędów w trakcie normalnej pracy programu (687)
- Tracing i Single Stepping (689)
- Stosowanie makropolecenia TRACE (689)
- Stosowanie makroinstrukcji ASSERT i VERIFY (691)
- Punkty przerwań i praca krokowa (693)
- Edytuj i kontynuuj (696)
- Podglądanie zmiennych programu (696)
- Pozostałe okna debuggera (697)
- Dodatkowe narzędzia debuggera (698)
- Korzystanie z programu Spy++ (698)
- Przeglądarka procesów (700)
- Przeglądarka obiektów OLE/COM (701)
- Narzędzie śledzące MFC (701)
- Klasy kolekcji (703)
- Stosowanie klas tablic (704)
- Stosowanie klas list (706)
- Stosowanie klas map (708)
- Tworzenie własnych klas kolekcji (710)
- Korzystanie z klas obsługujących współrzędne (714)
- Stosowanie klasy CPoint (714)
- Stosowanie klasy CRect (716)
- Stosowanie klasy CSize (721)
- Klasy zarządzające czasem (722)
- Stosowanie klasy COleDateTime (723)
- Stosowanie klasy COleDateTimeSpan (726)
- Korzystanie z klas łańcuchów (728)
- Stosowanie klasy CString (728)
- Manipulowanie łańcuchami (731)
- Szukanie łańcuchów (731)
- Formatowanie tekstu przeznaczonego do wyświetlenia (732)