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!
Znajdź podobne książki
Ostatnio czytane w tej kategorii
Darmowy fragment publikacji:
IDZ DO
IDZ DO
PRZYK£ADOWY ROZDZIA£
PRZYK£ADOWY ROZDZIA£
SPIS TRE(cid:140)CI
SPIS TRE(cid:140)CI
KATALOG KSI¥flEK
KATALOG KSI¥flEK
KATALOG ONLINE
KATALOG ONLINE
ZAM(cid:211)W DRUKOWANY KATALOG
ZAM(cid:211)W DRUKOWANY KATALOG
TW(cid:211)J KOSZYK
TW(cid:211)J KOSZYK
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
CENNIK I INFORMACJE
ZAM(cid:211)W INFORMACJE
ZAM(cid:211)W INFORMACJE
O NOWO(cid:140)CIACH
O NOWO(cid:140)CIACH
ZAM(cid:211)W CENNIK
ZAM(cid:211)W CENNIK
CZYTELNIA
CZYTELNIA
FRAGMENTY KSI¥flEK ONLINE
FRAGMENTY KSI¥flEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Visual C++ 6.
Vademecum profesjonalisty
Autorzy: Richard C. Leinecker i Tom Archer
T‡umaczenie: Marcin Pancewicz
ISBN: 83-7197-260-1
Tytu‡ orygina‡u:
Format: B5, stron: 1208
oprawa twarda
Zawiera CD-ROM
Visual C++ Bible
Je(cid:156)li potrafi to Visual C++, Ty tak¿e osi„gniesz zamierzony efekt. Szybko opanujesz
zdolno(cid:156)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(cid:243)w. Korzystaj„c z ksi„¿ki zawodowych programist(cid:243)w Ricka Leineckera i Toma
Archera -- (cid:132)Visual C++ 6. Vademecum profesjoanlisty(cid:148), szybko zdobŒdziesz
naj(cid:156)wie¿sze informacje potrzebne do utrzymania siŒ w czo‡(cid:243)wce najlepszych
programist(cid:243)w.
Proponujemy Ci doskona‡„ lekturŒ, kt(cid:243)ra pomo¿e w:
opanowaniu og(cid:243)lnych i szczeg(cid:243)‡owych technik programowania dla Windows --
od menu do obs‡ugi wyj„tk(cid:243)w i operacji wej(cid:156)cia-wyj(cid:156)cia;
zwiŒkszeniu mo¿liwo(cid:156)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(cid:243)w;
lepszym wykorzystaniu MFC do tworzenia kontrolek ActiveX lub ATL do
tworzenia kontrolek o bardzo ma‡ej objŒto(cid:156)ci kodu;
pisaniu dynamicznych aplikacji internetowych, aplikacji korzystaj„cych z klasy
CHtmlView oraz aplikacji DHTML;
poznaniu zaawansowanych mo¿liwo(cid:156)ci pakietu Visual Studio, w‡„cznie
z(cid:160) 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 ...................................................a...........................34
Program HelloWorld1...................................................a...................................................a.........35
Program HelloWorld2...................................................a...................................................a.........38
Kontrolka ATL HelloWorld3...................................................a.................................................40
Podsumowanie ...................................................a...................................................a....................43
Rozdział 2. Korzystanie z zalet zintegrowanego środowiska programisty ............................ 45
Korzystanie ze zintegrowanego środowiska ...................................................a..........................45
Tworzenie pierwszego projektu ...................................................a.............................................47
Dostosowywanie IDE ...................................................a...................................................a.........50
Przeglądanie aktualnych skrótów ...................................................a....................................50
Dodawanie, modyfikowanie i usuwanie skrótów ...................................................a............51
Korzystanie z pasków narzędzi...................................................a..............................................53
Wyświetlanie i ukrywanie pasków narzędzi...................................................a....................53
Dostosowywanie pasków narzędzi ...................................................a..................................54
Podsumowanie ...................................................a...................................................a....................54
Rozdział 3. Debuggowanie: gdy aplikacja nie działa ................................................................ 55
Co każdy debugger posiadać powinien...................................................a..................................56
Debugger zintegrowany z Visual Studio ...................................................a...............................57
Przygotowanie aplikacji do debuggowania ...................................................a.....................57
Korzystanie z debuggera podczas działania aplikacji ...................................................a.....59
Okna debuggowania ...................................................a...................................................a.....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 ...................................................a...............................................69
Korzystanie z okien komunikatów w celu przyspieszenia debuggowania .........................69
Wyjście debuggera...................................................a...................................................a........69
Korzystanie z asercji...................................................a...................................................a.....70
Zrzut obiektów...................................................a...................................................a..............71
Klasa CMemoryState i wykrywanie wycieków pamięci...................................................a.71
Komunikaty śledzenia MFC ...................................................a............................................72
Zdalne debuggowanie ...................................................a...................................................a.........72
2
Visual C++6. Vademecum profesjonalisty
Debuggowanie „just-in-time” ...................................................a................................................74
Debuggowanie typu „edit and continue” ...................................................a.........................74
Debuggowanie usług Windows NT...................................................a.................................75
Podsumowanie ...................................................a...................................................a....................76
Rozdział 4. Poprawianie wydajności aplikacji .......................................................................... 77
Optymalizowanie kodu ...................................................a...................................................a.......78
Wprowadzenie do profilowania ...................................................a.............................................80
Podstawy profilowania aplikacji...................................................a......................................82
Działanie Profilera ...................................................a...................................................a........82
Rodzaje profilowania...................................................a...................................................a....83
Zaawansowane ustawienia Profilera...................................................a................................84
Włączanie profilowania w Visual C++ 6.0...................................................a............................84
Sterowanie profilowaniem z poziomu Visual Studia ...................................................a......85
Wybór funkcji do profilowania ...................................................a.......................................86
Działanie programu PREP ...................................................a...............................................86
Profilowanie czasu wykonywania funkcji ...................................................a.......................89
Profilowanie pokrycia funkcji ...................................................a.........................................89
Opcje profilowania linii ...................................................a...................................................a90
Profilowanie pokrycia linii ...................................................a..............................................91
Łączenie wyników działania Profilera...................................................a.............................91
Eksportowanie danych z Profilera ...................................................a...................................92
Analizowanie danych Profilera...................................................a........................................92
Zawartość globalnych rekordów informacyjnych ...................................................a...........93
Lokalne rekordy informacyjne ...................................................a........................................94
Analizowanie statyki profilowania ...................................................a..................................95
Przetwarzanie wyników profilera w Excelu ...................................................a....................96
Profilowanie bibliotek łączonych dynamicznie...................................................a...............96
Profilowanie komponentów ActiveX lub kontrolek ActiveX ............................................96
Profilowanie kodu typu inline ...................................................a.........................................98
Profilowanie aplikacji wielowątkowych...................................................a..........................98
Profilowanie wydajności aplikacji...................................................a...................................99
Użycie programu CAP do wyeliminowania powtórzonych wywołań......................................99
Profilowanie usług Windows NT ...................................................a..................................101
Podsumowanie ...................................................a...................................................a..................102
Rozdział 5. Inne narzędzia......................................................................................................... 103
Spy++ ...................................................a...................................................a................................103
Dostosowywanie menu Tools ...................................................a..............................................107
Inne operacje w menu Tools ...................................................a................................................108
Przeglądanie klas...................................................a...................................................a...............109
Przeglądanie kodu źródłowego MFC...................................................a...................................111
Podsumowanie ...................................................a...................................................a..................112
Część II Podstawy programowania Windows
Rozdział 6. Przegląd programowania w MFC......................................................................... 115
Co to jest MFC? ...................................................a...................................................a................116
Filozofia MFC...................................................a...................................................a...................117
Zalety płynące z wykorzystania MFC ...................................................a.................................117
Właściwości, właściwości, właściwości...................................................a........................119
Nadająca się do rozbudowy architektura ...................................................a.......................119
Spis treści
3
Hierarchia klas MFC ...................................................a...................................................a.........120
Usługi plików...................................................a...................................................a..............120
Okna...................................................a...................................................a............................120
Grafika ...................................................a...................................................a........................124
Obsługa baz danych ...................................................a...................................................a....125
Nie używasz MFC?...................................................a...................................................a...........125
Podsumowanie ...................................................a...................................................a..................126
Rozdział 7. Menu ......................................................................................................................... 127
Tworzenie i edycja menu ...................................................a...................................................a..128
Tworzenie menu ...................................................a...................................................a.........129
Komunikaty menu w MFC ...................................................a............................................131
Klawisze akceleratorów ...................................................a...................................................a....132
Polecenia wprowadzane poprzez klawiaturę ...................................................a.................133
Definiowanie klawiszy akceleratorów...................................................a...........................134
Wybór odpowiednich klawiszy akceleratorów...................................................a..............135
Korzystanie z kilku tabel akceleratorów...................................................a........................138
Dynamicznie zmieniane menu ...................................................a.............................................140
Zakresy poleceń menu ...................................................a...................................................a140
Zmiana menu w czasie wykonania ...................................................a................................141
Zmiana istniejącego menu ...................................................a.............................................142
Stałe i tymczasowe mapy uchwytów ...................................................a.............................145
Menu kontekstowe ...................................................a...................................................a............147
Podsumowanie ...................................................a...................................................a..................149
Rozdział 8. Mysz i klawiatura ...................................................................................................151
Komunikaty wejściowe i stan systemu ...................................................a................................152
Obsługa myszy...................................................a...................................................a..................152
Tworzenie funkcji obsługi komunikatów myszy...................................................a...........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 ...................................................a..161
Zmiana wyglądu wskaźnika myszy ...................................................a...............................162
Demonstracyjny program zmieniający kształt wskaźnika myszy...........................................163
Przechwytywanie wskaźnika myszy...................................................a..............................166
Ograniczanie ruchów myszy...................................................a..........................................167
Odczyt danych z klawiatury...................................................a.................................................168
Klawiatura fizyczna ...................................................a...................................................a....168
Odzwierciedlanie ogniska wprowadzania ...................................................a.....................172
Podsumowanie ...................................................a...................................................a..................178
Rozdział 9. Grafika...................................................................................................................... 179
Wprowadzenie do interfejsu urządzeń graficznych ...................................................a.............180
Rodzaje grafiki...................................................a...................................................a............180
Rodzaje urządzeń GDI...................................................a...................................................a182
Kontekst urządzenia ...................................................a...................................................a..........183
Atrybuty rysunkowe kontekstu urządzenia ...................................................a...................184
Komunikat WM_PAINT ...................................................a...............................................187
Współrzędne rysowania...................................................a.................................................188
Generowanie komunikatu WM_PAINT...................................................a........................188
Rysowanie poza komunikatem WM_PAINT ...................................................a................190
4
Visual C++6. Vademecum profesjonalisty
Manipulowanie tekstem ...................................................a...................................................a....191
Obsługa koloru przez GDI...................................................a.............................................191
Kolor tekstu ...................................................a...................................................a................193
Wyrównywanie tekstu ...................................................a...................................................a194
Justowanie tekstu ...................................................a...................................................a........195
Czcionki ...................................................a...................................................a............................196
Czym jest czcionka? ...................................................a...................................................a...196
Wybieranie obiektów w kontekście urządzenia ...................................................a............196
Wybieranie czcionek magazynowych ...................................................a...........................197
Wybieranie czcionek niemagazynowych ...................................................a......................197
Pióra i pędzle...................................................a...................................................a.....................201
Pióra ...................................................a...................................................a............................202
Pędzle...................................................a...................................................a..........................204
Tryby odwzorowania ...................................................a...................................................a........206
Operacje rastrowe ...................................................a...................................................a.............207
Funkcje rysujące tekst...................................................a...................................................a.209
Obliczanie współrzędnych tekstu ...................................................a..................................210
Regiony obcinania...................................................a...................................................a.............215
Podsumowanie ...................................................a...................................................a..................216
Rozdział 10. Bitmapy, palety, DIB-y oraz podwójne buforowanie......................................... 217
Pamięć bitmapy i pamięć obrazu ...................................................a.........................................218
Tworzenie obiektów CBitmap ...................................................a.............................................220
Ładowanie i ustawianie zawartości bitmapy ...................................................a.......................222
Rysowanie obiektów CBitmap na ekranie ...................................................a...........................223
Operacje rastrowe ...................................................a...................................................a.............226
Program BlitDemo ...................................................a...................................................a............229
Palety i kolor ...................................................a...................................................a.....................234
Palety logiczne...................................................a...................................................a............237
Zdarzenia dotyczące palety...................................................a............................................239
Funkcja SetSystemPaletteUse()...................................................a.....................................241
Bitmapy niezależne od urządzenia...................................................a.......................................241
Anatomia pliku DIB ...................................................a...................................................a...241
Klasa CDib...................................................a...................................................a..................243
Program demonstracyjny ShowDIB ...................................................a..............................249
Podwójne buforowanie ...................................................a...................................................a.....252
Podsumowanie ...................................................a...................................................a..................254
Rozdział 11. Obsługa wyjątków MFC ........................................................................................ 255
Obsługa wyjątków strukturalnych ...................................................a.......................................256
Składnia obsługi wyjątków ...................................................a..................................................256
Zgłaszanie wyjątków ...................................................a...................................................a..256
Wychwytywanie wyjątków ...................................................a...........................................257
Porównanie technik obsługi błędów ...................................................a....................................258
Posługiwanie się kodami błędów...................................................a...................................258
Obsługa błędów we właściwym kontekście ...................................................a..................259
Poprawa czytelności kodu ...................................................a.............................................261
Zgłaszanie wyjątków przez konstruktory ...................................................a......................262
Klasa CException...................................................a...................................................a..............263
Tworzenie i usuwanie obiektów CException ...................................................a................263
Pobieranie od obiektu CException informacji o błędzie ..................................................264
Wychwytywanie wyjątków kilku typów ...................................................a.......................265
Spis treści
5
Definiowanie klas wyprowadzonych z klasy CException ...................................................a...266
Klasa CFileException ...................................................a...................................................a.267
Przykładowy program CFileException...................................................a..........................269
Definiowanie własnych klas wyprowadzonych z klasy CException ...............................272
Zaawansowane techniki obsługi wyjątków...................................................a..........................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 ...................................................a............279
Podsumowanie ...................................................a...................................................a..................282
Rozdział 12. Kontrolki .................................................................................................................. 283
Wprowadzenie ...................................................a...................................................a..................283
Tworzenie kontrolek ...................................................a...................................................a.........284
Używanie klasy CButton ...................................................a...............................................287
Używanie klasy CListBox ...................................................a.............................................289
Używanie klasy CEdit ...................................................a...................................................a293
Używanie klasy CStatic ...................................................a.................................................297
Używanie klasy CScrollBar...................................................a...........................................300
Używanie klasy CComboBox...................................................a........................................303
Program Mini edytora ...................................................a...................................................a.......306
Zaawansowane programowanie kontrolek...................................................a...........................307
Dodawanie interfejsu klawiatury ...................................................a...................................307
Modyfikowanie działania kontrolki...................................................a...............................308
Przyciski z bitmapami...................................................a...................................................a.309
Zmiana koloru kontrolki ...................................................a................................................311
Podsumowanie ...................................................a...................................................a..................313
Rozdział 13. Modalne i niemodalne okna dialogowe ................................................................ 315
Korzystanie z edytora dialogów...................................................a...........................................316
Szablony dialogów...................................................a...................................................a......316
Tworzenie nowego szablonu projektu ...................................................a...........................317
Edycja szablonu dialogu ...................................................a................................................318
Testowanie dialogu ...................................................a...................................................a.....323
Klasa CDialog ...................................................a...................................................a...................323
Modalne i niemodalne okna dialogowe ...................................................a.........................323
Tworzenie za pomocą ClassWizarda klas wyprowadzonych z klasy CDialog ................325
Zatwierdzanie i wymiana danych dialogu ...................................................a...........................326
Tworzenie zmiennych DDX ...................................................a..........................................326
Funkcje DoDataExchange oraz UpdateData ...................................................a.................327
Program demonstracyjny AddressBook...................................................a...............................329
Edycja przykładowego dialogu...................................................a......................................329
Klasa CContact ...................................................a...................................................a...........331
Przesłaniamy funkcję OnInitDialog ...................................................a..............................332
Obsługa komunikatu WM_DESTROY ...................................................a.........................333
Wyświetlanie danych...................................................a...................................................a..334
Obsługa komunikatów przycisków...................................................a................................334
Budowanie i testowanie programu demonstracyjnego ...................................................a..335
Stosowanie w dialogach kontrolek klas pochodnych ...................................................a..........336
Tworzenie klas kontrolek ...................................................a..............................................336
Program AddressBook: CAutoCompleteComboBox ...................................................a....340
6
Visual C++6. Vademecum profesjonalisty
Serializacja ...................................................a...................................................a........................342
Uczynienie klas serializowalnymi ...................................................a.................................343
Implementowanie funkcji wirtualnej Serialize() ...................................................a...........343
Odczyt danych z dysku ...................................................a..................................................344
Zapis danych na dysk...................................................a...................................................a..344
Dodanie serializacji do programu AddressBook ...................................................a...........344
Podsumowanie ...................................................a...................................................a..................350
Rozdział 14. Karty i arkusze właściwości................................................................................... 351
Klasy CPropertySheet oraz CPropertyPage ...................................................a.........................352
Tworzenie zasobu karty właściwości ...................................................a............................353
Tworzenie klasy CPropertyPage...................................................a....................................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 ...................................................a........357
Karty i arkusze właściwości: rady i techniki ...................................................a.......................359
Usuwanie standardowych przycisków...................................................a...........................359
Zmiana położenia standardowych przycisków ...................................................a..............361
Zmiana tytułów standardowych przycisków ...................................................a.................362
Wyłączanie zakładek ...................................................a...................................................a..362
Ponowne włączanie kart właściwości...................................................a............................366
Dynamiczna zmiana tytułów kart właściwości...................................................a..............367
Zmiana czcionki zakładek ...................................................a.............................................370
Użycie mnemonik z obiektami CPropertyPage ...................................................a.............370
Podsumowanie ...................................................a...................................................a..................372
Rozdział 15. Zapis i odczyt danych ............................................................................................. 373
Klasa CString ...................................................a...................................................a....................374
Tworzenie łańcuchów ...................................................a...................................................a.374
Dostęp do łańcucha znaków ...................................................a..........................................375
Porównania łańcuchów ...................................................a..................................................376
Wydzielanie podłańcuchów...................................................a...........................................378
Wyszukiwanie podłańcuchów ...................................................a.......................................378
Program StringDemo ...................................................a...................................................a........379
Klasa CFile...................................................a...................................................a........................385
Program FileDemo ...................................................a...................................................a............389
Klasa CCompressedFile ...................................................a...................................................a....395
Program CompressDemo ...................................................a...................................................a..396
Kompresja danych...................................................a...................................................a.............398
Metoda Huffmana ...................................................a...................................................a.......398
LZSS ...................................................a...................................................a...........................399
LZW...................................................a...................................................a............................399
Funkcje klasy CCompressedFile ...................................................a...................................400
Działanie programu CompressDemo...................................................a.............................402
Klasa CSerial dla komunikacji szeregowej...................................................a..........................405
Komunikacja szeregowa ...................................................a................................................405
Klasa CSerial ...................................................a...................................................a..............406
Klasa CRegistry ...................................................a...................................................a................408
Wartości Rejestru...................................................a...................................................a........408
Predefiniowane klucze Rejestru ...................................................a....................................408
Powszechnie wykorzystywane klucze Rejestru...................................................a.............409
Działanie klasy CRegistry ...................................................a.............................................410
Korzystanie ze schowka...................................................a...................................................a....412
Podsumowanie ...................................................a...................................................a..................415
Spis treści
7
Rozdział 16. Dźwięk....................................................................................................................... 417
Odtwarzanie zarejestrowanych dźwięków...................................................a...........................417
Rzut okiem na klasę CWave...................................................a..........................................418
Odtwarzanie plików dźwiękowych za pomocą Windows API.........................................418
Funkcje klasy CWave ...................................................a...................................................a.421
Program WaveDemo...................................................a...................................................a.........422
Odtwarzanie plików MIDI ...................................................a...................................................a425
Czym jest MIDI? ...................................................a...................................................a........426
Rzut okiem na klasę CMidi ...................................................a...........................................426
Funkcje klasy CMidi...................................................a...................................................a...426
Program MIDIDemo ...................................................a...................................................a.........427
CD Audio ...................................................a...................................................a..........................431
Rzut okiem na klasę CCDAudio...................................................a....................................432
Media Control Interface...................................................a.................................................432
Funkcje klasy CCDAudio...................................................a..............................................433
Program CDPlayer ...................................................a...................................................a............434
Podsumowanie ...................................................a...................................................a..................440
Rozdział 17. Timery oraz przetwarzanie w jałowym czasie aplikacji.................................... 441
Timery ...................................................a...................................................a...............................442
Przygotowanie timera do wysyłania komunikatów WM_TIMER ...................................442
Przygotowanie timera do wywoływania funkcji zwrotnej ...............................................444
Program Clock ...................................................a...................................................a..................446
Przetwarzanie w jałowym czasie aplikacji...................................................a...........................452
Program OnIdleDemo ...................................................a...................................................a.......454
Podsumowanie ...................................................a...................................................a..................457
Część III Architektura
Rozdział 18. Zarządzanie pamięcią ............................................................................................ 461
Zarządzanie pamięcią systemową ...................................................a........................................461
32-bitowy, stronicowany tryb adresowania Intela...................................................a.........464
Przestrzeń adresowa procesu w Windows 98 ...................................................a................466
Porządkowanie pamięci systemowej ...................................................a.............................470
Prywatna pamięć procesu...................................................a...................................................a..472
Alokowanie stron...................................................a...................................................a........473
Pamięć alokowana przez kompilator ...................................................a.............................478
Prywatne sterty Win32 ...................................................a..................................................483
Pamięć wspólna...................................................a...................................................a.................490
Pliki odwzorowane w pamięci...................................................a.......................................492
Dynamiczne alokowanie wspólnych stron ...................................................a....................498
Statyczne alokowanie wspólnych stron ...................................................a.........................502
Podsumowanie ...................................................a...................................................a..................503
Rozdział 19. Dokumenty, widoki i SDI....................................................................................... 505
Projekt typu dokument-widok...................................................a..............................................506
Klasa CDocument ...................................................a...................................................a.............507
Deklarowanie klasy dokumentu w aplikacji...................................................a..................508
Zmienne składowe klasy CDocument ...................................................a...........................509
Dokumenty a przetwarzanie komunikatów ...................................................a...................511
Przesłanianie wirtualnych funkcji dokumentu...................................................a...............512
Praca ze złożonymi danymi dokumentu ...................................................a........................513
Zalety klas CCmdTarget oraz CDocItem ...................................................a......................516
8
Visual C++6. Vademecum profesjonalisty
Znaczenie funkcji InitInstance dla dokumentów ...................................................a.................518
W jaki sposób aplikacja zarządza dokumentami i widokami ...........................................519
Klasa CSingleDocTemplate...................................................a...........................................519
Okna ramek...................................................a...................................................a.................520
Zasoby wzorców dokumentów ...................................................a......................................520
W jaki sposób zasób łańcucha wpływa na wzorzec dokumentu ......................................521
Podział zasobu łańcucha ...................................................a................................................522
Przegląd standardowych zasobów widoków ...................................................a.................523
Czas życia wzorca dokumentu...................................................a.......................................524
Zaawansowane posługiwanie się wzorcami ...................................................a..................525
Praca z kilkoma wzorcami...................................................a.............................................525
Niszczenie wzorców dodanych funkcją składową AddDocTemplate() ...........................527
Wykorzystanie klasy CView...................................................a................................................528
Deklarowanie klasy widoku ...................................................a..........................................528
Funkcje składowe klasy CView...................................................a.....................................529
Widoki a komunikaty ...................................................a...................................................a.531
Warianty klasy okna wyprowadzone z klasy CView ...................................................a....532
Aplikacje oparte na klasie CFormView i aplikacje okien dialogowych...........................533
Powrót do okien ramki...................................................a...................................................a533
Znaczenie funkcji AfxGetMainWnd()...................................................a...........................534
Aplikacja jednodokumentowa HexView ...................................................a.............................535
Podsumowanie ...................................................a...................................................a..................541
Rozdział 20. Układ aplikacji MDI............................................................................................... 543
Ponowny przegląd modelu dokument-widok ...................................................a......................544
Ponowny przegląd klasy CDocument ...................................................a..................................546
Zarządzanie bardziej złożonymi kombinacjami dokumentów, widoków i ramek..................547
Praca z kilkoma rodzajami dokumentów...................................................a.......................547
Użycie kilku rodzajów widoków dokumentu ...................................................a................548
Klasa CMDIFrameWnd...................................................a.................................................550
Klasa CMDIChildWnd ...................................................a..................................................551
Klasa CMultiDocTemplate ...................................................a............................................553
Narzut związany z użyciem klasy CDocument ...................................................a.............554
Dalsze właściwości aplikacji MDI ...................................................a................................554
Program PaintObj...................................................a...................................................a..............555
Dzielone okna ...................................................a...................................................a...................562
Różnice pomiędzy dzielonymi oknami ...................................................a.........................563
Specyfika klasy CSplitterWnd...................................................a.......................................564
Dodatkowe uwagi na temat dynamicznych okien dzielonych..........................................566
Użycie różnych widoków w dynamicznych panelach...................................................a...567
Użycie obiektu CRuntimeClass ...................................................a.....................................568
Użycie okien dzielonych z widokami powiązanymi z więcej niż jednym dokumentem .569
Użycie statycznych okien dzielonych...................................................a............................570
Tworzenie statycznego okna dzielonego ...................................................a.......................570
Wspólne paski przewijania ...................................................a............................................571
Wyznaczanie rozmiaru aktualnego i idealnego ...................................................a.............572
Wydajność okien dzielonych ...................................................a.........................................573
Program Dynsplit ...................................................a...................................................a..............573
Subclassing okien potomnych...................................................a..............................................578
Subclassing okien z pomocą MFC ...................................................a................................579
Alternatywy dla architektury dokument-widok...................................................a.............580
Podsumowanie ...................................................a...................................................a..................581
Spis treści
9
Rozdział 21. Wydruk i podgląd wydruku .................................................................................. 583
Obsługa wydruku wbudowana w API Windows ...................................................a.................584
Informacje o drukarce...................................................a...................................................a.587
Znaczenie charakterystyki tekstu...................................................a...................................588
Przykład drukowania z użyciem API Windows ...................................................a..................589
Drukowanie w MFC......................................a...................................................a.......................591
Podział ról przy drukowaniu...................................................a..........................................591
Sekwencja wydruku w MFC ...................................................a.........................................592
Dalszy wgląd w domyślny proces drukowania w MFC ...................................................a595
Protokół wydruku ...................................................a...................................................a.......596
Przesłanianie funkcji klasy widoku ...................................................a...............................596
Klasa CPrintInfo ...................................................a...................................................a.........598
Strony wydruku a strony dokumentu...................................................a.............................598
Implementacja podziału na strony (paginacji)...................................................a...............599
Dodanie funkcji pomocniczych ...................................................a.....................................601
Paginacja w czasie wydruku ...................................................a..........................................604
Powrót do drukowanie nagłówków i stopek...................................................a..................604
Alokowanie zasobów GDI dla wydruku...................................................a........................605
Powiększanie drukowanego obrazu...................................................a...............................606
Architektura podglądu wydruku ...................................................a..........................................606
Proces podglądu wydruku...................................................a..............................................607
Modyfikowanie podglądu wydruku...................................................a...............................607
Rozszerzanie podglądu wydruku w aplikacji ...................................................a................608
Klasa CPrintDialog ...................................................a...................................................a.....610
Program HexViewMDI...................................................a...................................................a.....611
Podsumowanie ...................................................a...................................................a..................615
Rozdział 22. MFC i elementy zaawansowanego interfejsu użytkownika............................... 617
Czasem potrzeba większej kontroli...................................................a......................................618
Pętla modalna ...................................................a...................................................a....................619
Wnętrze funkcji RunModalLoop()...................................................a.......................................619
Parametry pętli modalnej ...................................................a...................................................a..622
Przerywanie pętli modalnej...................................................a..................................................623
Tworzenie modalnej aplikacji ...................................................a..............................................623
Tworzenie i zamykanie okna modalnego...................................................a.............................624
Dodawanie funkcji obsługi ...................................................a............................................624
Prosta modalna aplikacja ...................................................a...............................................627
Dalsza rozbudowa modalnego okna ...................................................a....................................628
Rysowanie przezroczystej bitmapy na przezroczystym obszarze roboczym..........................632
Wyświetlanie bitmapy ...................................................a...................................................a633
Wyznaczenie miejsca wklejenia bitmapy ...................................................a......................636
Zgodne konteksty urządzeń ...................................................a...........................................637
Struktura BITMAP ...................................................a...................................................a.....638
Składanie wszystkiego razem ...................................................a........................................640
Ograniczenie obszaru kliknięcia...................................................a....................................642
Podsumowanie ...................................................a...................................................a..................643
Rozdział 23. Paski stanu i paski narzędzi................................................................................... 645
Tworzenie i wykorzystywanie pasków stanu...................................................a.......................646
Tworzenie paska stanu...................................................a...................................................a646
Dostosowywanie pasków stanu ...................................................a.....................................647
Tworzenie i kontrolowanie pasków narzędzi...................................................a.......................651
Paski kontrolek MFC ...................................................a...................................................a..651
Tworzenie i inicjowanie paska narzędzi...................................................a........................652
10
Visual C++6. Vademecum profesjonalisty
Korzystanie z kontrolek ReBar ...................................................a............................................657
Podsumowanie ...................................................a...................................................a..................658
Rozdział 24. Kontrolka widoku drzewa i kontrolka widoku listy .......................................... 659
CTreeCtrl ...................................................a...................................................a..........................660
Podstawy kontrolki widoku drzewa...................................................a...............................661
Klasa CTreeCtrl ...................................................a...................................................a..........662
Program demonstracyjny CTreeCtrlDemo ...................................................a....................670
CListCtrl...................................................a...................................................a............................675
Podstawy kontrolki widoku listy ...................................................a...................................675
Klasa CListCtrl ...................................................a...................................................a...........676
Podsumowanie ...................................................a...................................................a..................681
Rozdział 25. Wątki......................................................................................................................... 683
Wątki ...................................................a...................................................a.................................684
Tworzenie wątków roboczych ...................................................a.......................................685
Funkcja wątku...................................................a...................................................a.............687
Tworzenie wątków interfejsu użytkownika...................................................a...................687
Wstrzymywanie i wznawianie wątków ...................................................a.........................688
Usypianie wątków ...................................................a...................................................a......689
Kończenie działania wątku ...................................................a............................................689
Kończenie działania wątku z wnętrza innego wątku ...................................................a.....690
Wątki, procesy i priorytety ...................................................a............................................693
Klasy priorytetu procesu...................................................a................................................695
Dzielenie obiektów MFC pomiędzy wątkami ...................................................a.....................695
Używanie funkcji biblioteki czasu wykonania C w aplikacjach wielowątkowych ................698
Program ThreadDemo1...................................................a...................................................a.....699
Podsumowanie ...................................................a...................................................a..................703
Część IV Programowanie baz danych
Rozdział 26. ODBC........................................................................................................................ 707
Terminologia związana z ODBC i bazami danych ...................................................a..............708
ODBC – potrzeba standardu ...................................................a................................................710
Standard ODBC ...................................................a...................................................a..........710
Poziomy zgodności ODBC API ...................................................a....................................711
Poziomy zgodności ODBC SQL ...................................................a...................................712
ODBC – implementacja ...................................................a...................................................a....713
Konfigurowanie ODBC ...................................................a.................................................713
Łączenie się ze źródłem danych ...................................................a....................................715
Pobieranie informacji o źródle danych ...................................................a..........................716
Przygotowywanie i wykonywanie poleceń SQL ...................................................a...........716
Pobieranie danych...................................................a...................................................a.......717
Odłączanie się od źródła danych ...................................................a...................................718
Użycie ODBC do pobierania danych...................................................a...................................719
Dodawanie obsługi ODBC do projektu Visual C++ ...................................................a.....720
Modyfikowanie okna dialogowego programu...................................................a...............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 ...................................................a...............................727
Działanie klasy CODBCDynamic ...................................................a.................................729
Użycie klasy CODBCDynamic ...................................................a.....................................734
Podsumowanie ...................................................a...................................................a..................735
Spis treści
11
Rozdział 27. Klasy baz danych MFC.......................................................................................... 737
Klasa CDatabase ...................................................a...................................................a...............738
Klasa CRecordset...................................................a...................................................a........741
Konstruowanie rekordsetu ...................................................a.............................................745
Otwieranie rekordsetu...................................................a...................................................a.746
Odczyt i zapis danych z użyciem RFX...................................................a..........................746
Filtrowanie rekordów...................................................a...................................................a..747
Sortowanie rekordów zwróconych przez rekordset...................................................a.......749
Poruszanie się w zestawie wyników...................................................a..............................750
Zapisywanie rekordów...................................................a...................................................a751
Usuwanie rekordów ...................................................a...................................................a....751
Użycie klas baz danych MFC ...................................................a..............................................752
Dodanie obsługi klas baz danych MFC ...................................................a.........................752
Tworzenie interfejsu użytkownika dla programu demonstracyjnego...............................752
Dodawanie klasy pomocniczej reprezentującej dane użytkownika..................................753
Tworzenie klasy rekordsetu dla tabeli UserMaster ...................................................a.......754
Modyfikowanie pliku nagłówkowego dialogu ...................................................a..............754
Modyfikowanie pliku implementującego dialog ....................................
Pobierz darmowy fragment (pdf)
Gdzie kupić całą publikację:
Opinie na temat publikacji:
Inne popularne pozycje z tej kategorii:
Czytaj również:
Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką :