lehrerbibliothek.deDatenschutzerklärung
Inside Visual C++ 6.0 Das Microsoft-Standardwerk zur Programmierung mit Visual C++: MFC, ATL, Internet und vieles mehr
Inside Visual C++ 6.0
Das Microsoft-Standardwerk zur Programmierung mit Visual C++: MFC, ATL, Internet und vieles mehr




David J. Kruglinski, George Shepperd, Scot Wingo (Hrsg.)

Microsoft Press
EAN: 9783860634615 (ISBN: 3-86063-461-5)
1104 Seiten, hardcover, 18 x 24cm, 1998, CD zum Buch ist auch dabei

EUR 49,90
alle Angaben ohne Gewähr

Umschlagtext
Inside Visual C++ 6.0 ist die neuste Ausgabe des Buchs, das sich mittlerweile einen herausragenden Platz in der Reihe der Standardwerke zur Visual C++-Programmierung gesichert hat. In der 5. Auflage präsentiert es sich komplett überarbeitet und an die neuen Möglichkeiten von Microsoft Visual C++ 6.0 angepasst. Neben den Fundamenten der Visual C++-Programmierung, umfangreicher Abdeckung der Programmierung mit den MFC und fortgeschrittenen Themen finden Sie Informationen zu den wichtigen neuen Aspekten von Visual C++ 6.0. Neuen Möglichkeiten der Datenbankprogrammierung (OLE DB), der Programmierung mit der ATL, dem Umgang mit DHTML, den Steuerelementen des Internet Explorer 4 und der Windows CE-Programmierung sind eigene Kapitel gewidmet. Damit bietet Inside Visual C++ in seiner 5. Auflage noch mehr an detaillierten und wertvollen Informationen, die dieses Buch zur umfassenden Informationsquelle und zum idealen Lehrbuch über eines der mächtigsten und komplexesten Entwicklungswerkzeuge machen.



Die neueste Auflage des Microsoft-Standardwerks



Datenbankprogrammierung mit OLE DB



Erstellung von Steuerelementen mit der ATL



Lesen Sie:

- Einführung zu Windows, Visual C++ und den MFC

- Die Ansichtsklassen der MFC

- Ereignisbehandlung und Dialogfelder

- Speicherverwaltung unter Win 32 und Multithreading

- GDI-Objekte und -Bitmaps

- ActiveX-Steuerelemente und der Internet Explorer 4

- Die Dokument-Ansicht-Architektur

- Dynamische Link-Bibliotheken (DLLs)

- COM, Automatisierung und OLE

- Einführung in die ATL

- ATL und ActiveX-Steuerelemente

- Datenbanken mit ODBC, DAO und OLE DB

- TCP/IP, Winsock und WINInet

- IIS-Programmierung und Dynamic HTML

- Visual C++ für Windows CE



Auf Begleit-CD:

- Die Beispieldateien des Buchs

- Das englische Original des Buchs in elektronischer Form

- Die Stingray MFC FAQ - die häufigsten Fragen zu den MFC als elektronisches Buch



Ein Buch für:

Visual C++-Programmierer und die, die es werden wollen
Verlagsinfo
Inside Visual C++ 6.0 ist die neuste Ausgabe des Buchs, das sich mittlerweile einen herausragenden Platz in der Reihe der Standardwerke zur Visual C++-Programmierung gesichert hat. In der 5. Auflage präsentiert es sich komplett überarbeitet und an die neuen Möglichkeiten von Microsoft Visual C++ 6.0 angepasst. Neben den Fundamenten der Visual C++-Programmierung, umfangreicher Abdeckung der Programmierung mit den MFC und fortgeschrittenen Themen finden Sie Informationen zu den wichtigen neuen Aspekten von Visual C++ 6.0. Neuen Möglichkeiten der Datenbankprogrammierung (OLE DB), der Programmierung mit der ATL, dem Umgang mit DHTML, den Steuerelementen des Internet Explorer 4 und der Windows CE-Programmierung sind eigene Kapitel gewidmet. Damit bietet Inside Visual C++ in seiner 5. Auflage noch mehr an detaillierten und wertvollen Informationen, die dieses Buch zur umfassenden Informationsquelle und zum idealen Lehrbuch über eines der mächtigsten und komplexesten Entwicklungswerkzeuge machen
Inhaltsverzeichnis
Danksagung

Einführung
MFC, ATL und WFC - Ist die MFC-Bibliothek tot?
C++ oder Java
Zielgruppe dieses Buches
Was hier nicht behandelt wird
Verwendung dieses Buches
Aufbau dieses Buches
Teil A: Einführung zu Windows, Visual C++ und dem MFC-Anwendungsgerüst
Teil B: Die Ansichtsklassen der MFC-Bibliothek
Teil C: Die Dokument-Ansicht-Architektur
Teil D: ActiveX: COM, Automatisierung und OLE
Teil E: Datenbankverwaltung
Teil F: Programmierung für das Internet
Teil G: Anhänge
Win32 und Win16
Windows 95, Windows 98 oder Windows NT
Windows für Fortgeschrittene: Die Einschübe
>>Hinweis für Win32-Programmierer<<
Verwendung der Begleit-CD
Technische Hinweise und Beispielprogramme
Korrekturen, Kommentare und Hilfe

Teil A
Einführung zu Windows, Visual C++ und dem MFC-Anwendungsgerüst

1 Microsoft Windows und Visual C++
Das Windows-Programmiermodell
Nachrichtenverarbeitung
Graphics Device Interface (GDI)
Ressourcengestützte Programmierung
Speicherverwaltung
DLLs (Dynamic Link Libraries)
Win32-API
Die Komponenten von Visual C++
Microsoft Visual C++ 6.0 und der Erstellungsprozess
Ressourcen-Editoren - Die Ansicht Ressourcen im Arbeitsbereich
C-/C++-Compiler
Quelltext-Editor

Ressourcen-Compiler
Linker
Debugger
MFC-Anwendungs-Assistent
Klassen-Assistent
Quellcode-Browser
Online-Hilfe
Windows-Diagnosewerkzeuge
Versionskontrolle
Sammlung der Komponenten und Steuerelemente
MFC-Bibliothek Version 6.0
Microsoft Active Template Library

2 Das MFC-Anwendungsgerüst
Wozu das Anwendungsgerüst verwenden?
Einarbeitungszeit
Was ist ein Anwendungsgerüst?
Anwendungsgerüst im Vergleich zu Klassenbibliothek
Beispiel für ein Anwendungsgerüst
MFC-Nachrichtenzuordnung
Dokumente und Ansichten

Teil B
Die Ansichtsklassen der MFC-Bibliothek

3 Einstieg mit dem MFC-Anwenungs-Assistenten - >>Hello, world!<<
Was versteht man unter einer Ansicht?
SDI- oder MDI-Anwendung
Die Minimalanwendung - EX03A
Die Ansichtsklassen CEx03a View
Im Ansichtsfenster zeichnen - Die Windows-GDI
Vorschau auf die Ressourcen-Editoren
Der Inhalt von ex03a.rc
Den Editor für Dialog-Ressourcen starten
Konfigurationen Win32 Debug und Win32 Release
Die Diagnosemakros aktivieren
Vorkompilierte Header-Dateien
Zwei Methoden der Programmausführung

4 Ereignisbehandlung, Abbildungsmodi und eine Ansicht mit Bildlauf
Benutzereingaben verarbeiten - Nachrichtenzuordnungen
Die Nachrichtenzuordnung
Den Zustand eines Ansichtsobjekts speichern - Datenelemente
Die Theorie der ungültigen Rechtecke
Der Client-Bereich eines Fensters
Berechnungen mit CRect, CPoint und CSize
Liegt ein Punkt in einem Rechteck?
Der CRect-Operator LPCRECT
Liegt ein Punkt innerhalb einer Ellipse?
Das Beispielprogramm EX04A
Den Klassen-Assistenten in EX04A einsetzen
Abbildungsmodi
Der Abbildungsmodus MM_TEXT
Abbildungsmodi mit fester Skalierung
Abbildungsmodi mit variabler Skalierung
Koordinatenumwandlung
Das Beispielprogramm EX04B - Umwandlung in den Abbildungsmodus MM_HIMETRIC
Ein bildlauffähiges Ansichtsfenster
Größe von Fenster und Ausgabebereich
Bildlaufleisten
Bildlaufalternativen
Die Funktion OnInitialUpdate
Tastatureingabe annehmen
Das Beispielprogramm EX04C - Bildlauf
Weitere Windows-Nachrichten
Die Nachricht WM_CREATE
Die Nachricht WM_CLOSE
Die Nachricht WM_QUERYENDSESSION
Die Nachricht WM_DESTROY
Die Nachricht WM_NCDESTROY

5 Grafikgeräteschnittstelle, Farben und Schriften
Gerätekontextklassen
Die Bildschirmkontextklassen CClientDC und CWindowDC
CDC-Objekte anlegen und löschen
Der Zustand des Gerätekontexts
Die Klasse CPaintDC
GDI-Objekte
GDI-Objekte anlegen und löschen
GDI-Objekte überwachen
Vordefinierte GDI-Objekte
Wie lange gilt eine GDI-Auswahl?
Farbzuordnung unter Windows
Standard-VGA-Karten
Grafikkarten mit 256 Farben
16-Bit-Grafikkarten
24-Bit-Grafikkarten
Schriften
Schriften sind GDI-Objekte
Eine Schrift auswählen
Schriften drucken
Schriften anzeigen
Logische und physische Bildschirmmaße
Die Zeichenhöhe berechnen
Das Beispielprogramm EX05A
Elemente des Programms EX05A
Das Beispielprogramm EX05B
Elemente des Programms EX05B
Das Beispielprogramm EX05C - Eine zweite Anwendung mit CScrollView
Elemente des Programms EX05C
SetScaleToFitSize-Modus in CScrollView
Den Abbildungsmodus für logische Twips in bildlauffähigen Ansichten verwenden

6 Modale Dialogfelder und die Standardsteuerelemente von Windows
Modale im Vergleich zu nichtmodalen Dialogfeldern
Ressourcen und Steuerelemente
Ein modales Dialogfeld erstellen
Das Dialogfeld der Dialoge und Editoren - Beispiel EX06A
Die Dialogressource erstellen
Der Klassen-Assistent und die Dialogklasse
Das Dialogfeld mit der Ansicht verknüpfen
Erläuterungen zur Anwendung EX06A
Das Dialogprogramm erweitern
Aufruf der Funktion OnOK abfangen
Verarbeitung von OnCancel
Die Bildlaufleisten-Steuerelemente implementieren
Bezeichnung von Steuerelementen: CWnd-Zeiger und Steuerelement-IDs
Die Hintergrundfarbe für Dialogfelder und Steuerelemente festlegen
Zeichnen innerhalb des Dialogfelds
Dialogsteuerelemente zur Laufzeit hinzufügen
Andere Steuerelementfunktionen verwenden
Windows 95-Standardsteuerelemente
Das Steuerelement Statusanzeige
Das Steuerelement Regler
Das Steuerelement Drehfeld
Das Steuerelement Listenelement
Das Steuerelement Strukturansicht
Die Nachricht WM_NOTIFY
Das Beispielprogramm EX06B
Andere Windows-Standardsteuerelemente

7 Nichtmodale Dialoge und Standarddialogfelder
Nichtmodale Dialogfelder
Nichtmodale Dialogfelder erstellen
Benutzerdefinierte Nachrichten
Besitzer eines Dialogfelds
Beispiel für ein nichtmodales Dialogfeld - EX07A
Die Klasse CFormView - Eine Alternative zu nichtmodalen Dialogfeldern
Die Standarddialogfelder von Windows
Direkter Einsatz der Klasse CFileDialog
Klassen von Standarddialogfeldklassen ableiten
Verschachtelte Dialogfelder
Ein Beispiel mit CFileDialog - EX07B
Weitere Anpassungsmöglichkeiten von CFileDialog

8 ActiveX-Steuerelemente verwenden
ActiveX-Steuerelemente im Vergleich zu normalen Windows-Steuerelementen
Normale Steuerelemente im Rückblick
Ähnlichkeiten zwischen ActiveX-Steuerelementen und normalen Steuerelementen
Unterschiede zwischen ActiveX-Steuerelementen und normalen Steuerelementen - Eigenschaften und Methoden
ActiveX-Steuerelemente installieren
Das Kalender-Steuerelement
Programmierung von ActiveX-Steuerelement-Containern
Zugriff auf Eigenschaften
C++-Klassen für ActiveX-Steuerelemente
Unterstützung des MFC-Anwendungs-Assistenten für ActiveX-Steuerelemente
Der Klassen-Assistent und das Container-Dialogfeld
ActiveX-Steuerelemente im Speicher halten
Das Beispielprogramm EX08A - Ein Dialogfeld als ActiveX-Steuerelement-Container
ActiveX-Steuerelemente in HTML-Dateien
ActiveX-Steuerelemente zur Laufzeit erstellen
Das Beispielprogramm EX08B - Das ActiveX-Webbrowser-Steuerelement
Die Beispielanwendung EX08C - Ein vollständiger zweifenstriger Webbrowser
Bildeigenschaften
Bindungsfähige Eigenschaften - Änderungsbenachrichtigungen
Weitere ActiveX-Steuerelemente

9 Standardsteuerelemente von Internet Explorer 4
Einführung in die neuen Standardsteuerelemente von Internet Explorer 4
Das Steuerelement zur Datums- und Zeitauswahl (DateTimePicker)
Das Monatskalender-Steuerelement
Das IP-Adresse-Steuerelement
Erweitertes Kombinationsfeld-Steuerelement
Das Beispielprogramm EX09A

10 Speicherverwaltung unter Win32
Prozesse und Speicherbereiche
Der Prozessadressraum unter Windows 95
Der Prozessadressraum unter Windows NT
Das Konzept des virtuellen Arbeitsspeichers
Die Funktion VirtualAlloc - belegter und reservierter Speicher
Der Windows-Heap und die Familie der GlobalAlloc-Funktionen
Der Small-Block-Heap, die Operatoren new und delete und die Funktion _heapmin
Speicherbilddateien
Zugriff auf Ressourcen
Tipps zum Umgang mit dynamischem Speicher
Optimale Speicherstrategien für konstante Daten

11 Bitmaps
GDI-Bitmaps und geräteunabhängige Bitmaps
Farbige Bitmaps und monochrome Bitmaps
GDI-Bitmaps verwenden
Eine GDI-Bitmap aus einer Ressource laden
Wie sich der Bildschirm-Abbildungsmodus auswirkt
Bits dehnen
Das Beispielprogramm EX11A
Mit Bitmaps die Bildschirmanzeige verbessern
Das Beispielprogramm EX11B
Animation unter Windows
Geräteunabhängige Bitmaps und die Klasse CDib
Anmerkungen zur Palettenprogrammierung
DIBs, Pixel und Farbtabellen
Die Struktur einer DIB in einer BMP-Datei
Zugriffsfunktionen für DIBs
Die Klasse CDib
Die Anzeigegeschwindigkeit von DIBs
Das Beispielprogramm EX11C
Weitere Möglichkeiten zur DIB-Programmierung
Die Funktion LoadImage
Die Funktion DrawDibDraw
Schaltflächen mit Bitmaps belegen
Das Beispielprogramm EX11D
Weitere Möglichkeiten für Bitmap-Schaltflächen

12 Nachrichtenverarbeitung und Multithreading-Programmierung unter Windows
Nachrichtenverarbeitung unter Windows
Wie ein Programm mit einem einzigen Thread Nachrichten verarbeitet
Die Ablaufsteuerung abgeben
Zeitgeber
Das Programm EX12A
Leerlaufroutinen
Multithreading-Programmierung
Einen Arbeits-Thread schreiben und starten
Wie der Haupt-Thread mit einem Arbeits-Thread kommuniziert
Wie der Arbeits-Thread mit dem Haupt-Thread kommuniziert
Das Programm EX12B
Ereignisse zur Synchronisation von Threads einsetzen
Das Programm EX12C
Threads blockieren
Kritische Abschnitte
Mutex-Objekte und Semaphoren
Benutzeroberflächen-Threads

Teil C
Die Dokument-Ansicht-Architektur

13 Menüs, Zugriffstasten, das Rich-Edit-Steuerelement und Eigenschaftendialogfelder
Das Hauptrahmenfenster und die Dokumentklassen
Windows-Menüs
Zugriffstasten
Befehlsverarbeitung
Befehlsnachrichten in abgeleiteten Klassen bearbeiten
Bearbeitungsroutinen für Befehle zur Aktualisierung der Benutzeroberfläche
Aus Dialogfeldern stammende Befehle
Die Standardmenübefehle des Anwendungsgerüsts
Menübefehle aktivieren oder deaktivieren
MFC-Textverarbeitungsoptionen
Die Klasse CEditView
Die Klasse CRichditView
Die Klasse CRichEditCtrl
Das Beispielprogramm EX13A
Eigenschaftendialogfelder
Eigenschaftendialogfelder erstellen
Datenaustausch in Eigenschaftendialogfeldern
Eine Neuauflage des Beispielprogramms EX13A
Die Behandlung der Schaltfläche Übernehmen
Die Klasse CMenu
Kontextmenüs erstellen
Erweiterte Befehlsverarbeitung

14 Symbol- und Statusleisten
Steuerelementleisten und das Anwendungsgerüst
Symbolleisten
Symbolleisten-Bitmaps
Schaltflächenzustände
Symbolleisten und Befehlsnachrichten
Behandlungsroutinen für die Befehle zur Symbolleistenaktualisierung
QuickInfo
Die Suche nach dem Hauptrahmenfenster
Das Beispielprogramm EX14A - Symbolleiste
Die Statusleiste
Statusleisten definieren
Die Meldungszeile
Die Statusanzeige
Die Steuerung der Statusleiste
Das Beispielprogramm EX14B - Statusleiste
Die Internet Explorer-Infoleiste
Aufbau einer Infoleiste
Das Beispielprogramm EX14C - Infoleiste

15 Eine wiederverwendbare Rahmenfensterklasse
Warum wiederverwendbare Basisklassen schwer zu schreiben sind
Die Klasse CPersistentFrame
Die Klasse CFrameWnd und die Funktion ActivateFrame
Die Funktion PreCreateWindow
Die Windows-Registrierung
Mit der Klasse CString arbeiten
Die Position eines maximierten Fensters
Der Status der Steuerelementleiste und die Registrierung
Statische Datenelemente
Das Standard-Fensterrechteck
Das Beispielprogramm EX15A
Persistente Rahmenfenster in MDI-Anwendungen

16 Dokument und Ansicht trennen
Funktionen für die Interaktion zwischen Kokument und Ansicht
Die Funktion CView::GetDocument
Die Funktion CDocument::UpdateAllViews
Die Funktion CView::OnUpdate
Die Funktion CView::OnInitialUpdate
Die Funktion CDocument::OnNewDocument
Eine einfache Dokument-Ansicht-Anwendung
Die Klasse CFormView
Die Klasse CObject
Programmdiagnose mit Datenauszügen
Das Makro TRACE
Das Objekt afxDump
Die Funktion Dump und die Klasse CObject
Automatischer Datenauszug von nicht gelöschten Objekten
Das Beispielprogramm EX16A
Eine etwas komplexere Interaktion zwischen Dokument und Ansicht
Die Funktion CDocument::DeleteContents
Die Auflistungsklasse CObList
Eine FIFO-Liste auf der Basis von CObList
Über CObList iterieren: Die POSITION-Variable
Die auf einer C++-Vorlage basierende Auflistungsklasse CTypedPtrList
Die Funktion Dump und Auflistungsklassen
Das Beispielprogramm EX16B
Ressourcen
Quelltext
Geschützte virtuelle Funktionen
Die Anwendung EX16B testen
Zwei Übungen für den Leser

17 Dokumente lesen und schreiben - SDI-Anwendungen
Was ist Serialisierung?
Datenträgerdateien und Archive
Die Serialisierung einer Klasse ermöglichen
Eine Serialize-Funktion schreiben
Aus Archiven lesen: Eingebettete Objekte oder Zeiger
Auflistungen serialisieren
Die Funktion Serialize und das Anwendungsgerüst
Die SDI-Anwendung
Das Windows-Anwendungsobjekt
Die Dokumentvorlagenklasse
Die Dokumentvorlagen-Ressource
Mehrere Ansichten für ein SDI-Dokument
Ein leeres Dokument erstellen - die Funktion CWinApp::OnFileNew
Die Funktion DeleteContents der Dokumentklasse
Dateien speichern - OnFileSave und OnFileSaveAs
Das Änderungs-Flag des Dokuments
Das Beispielprogramm EX17A - Eine SDI-Anwendung mit Serialisierung
Die Klasse CStudent
Die Klasse CEx17aApp
Die Klasse CMainFrame
Die Klasse CStudentDoc
Die Klasse CStudentView
Die Anwendung EX17A testen
Dokumente aus dem Windows Explorer laden
Programmregistrierung
Dokumente über Doppelklick öffnen
Drag & Drop aktivieren
Startparameter von Programmen angeben
Start- und Drag-&-Drop-Funktionen des Windows-Explorer ausprobieren

18 Dokumente lesen und schreiben - MDI-Anwendungen
Eine typische MDI-Anwendung im MFC-Stil
Das MDI-Anwendungsobjekt
Die MDI-Dokumentvorlagenklasse
Das MDI-Rahmenfenster und die untergeordneten MDI-Fenster
Ressourcen für Hauptrahmenfenster und Dokumentvorlagen
Ein leeres Dokument erstellen - die Funktion CWinApp::OnFileNew
Zusätzliche Ansichten für vorhandene Dokumente erstellen
Dokumente öffnen und speichern
Mehrere Dokumentvorlagen
Dokumente aus dem Windows-Explorer laden und per Drag & Drop verschieben
Das Beispielprogramm EX18A
Die Klasse CEx18aApp
Die Klasse CMainFrame
Die Klasse CChildFrame
Die Anwendung EX18A testen

19 Drucken und Seitenansicht
Drucken unter Windows
Standarddialogfelder zur Druckersteuerung
Druckseiten interaktiv auswählen
Bildschirmseiten und Druckseiten
Seitenansicht
Druckausgaben programmieren
Der Drucker-Gerätekontext und die Funktion CView::OnDraw
Die Funktion CView::OnPrint
Den Gerätekontext vorbereiten - Die Funktion CView::OnPrepareDC
Beginn und Ende eines Druckauftrags
Das Beispielprogramm EX19A - WYSIWYG-Druckausgaben
Den bedruckbaren Bereich ermitteln
Die Klasse CArray - Eine weitere vorlagenbasierte Auflistungsklasse
Das Beispielprogramm EX19B - Mehrere Seiten drucken

20 Teilbare Fenster und Mehrfachansichten
Teilbare Fenster
Ansichtsoptionen
Dynamische und statische Fensterteilung
Das Beispielprogramm EX20A - Eine SDI-Anwendung mit einer Ansichtsklasse und dynamisch teilbarem Fenster
Ressourcen für die Fensterteilung
Die Klasse CMainFrame
Die Anwendung EX20A testen
Das Beispielprogramm EX20B - Eine SDI-Anwendung mit zwei Ansichtsklassen und statistisch geteiltem Fenster
Die Klasse CHexView
Die Klasse CMainFrame
Die Anwendung EX20B testen
Das Beispielprogramm EX20C - Verschiedene Ansichten ohne teilbares Fenster
Ressourcen
Die Klasse CMainFram
Die Anwendung EX20C testen
Das Beispielprogramm EX20D - Eine MDI-Anwendung mit mehreren Ansichtsklassen
Ressourcen
Die Klasse CEx20dApp
Die Klasse CMainFrame
Die Anwendung EX20D testen

21 Kontextabhängige Hilfe
WinHelp
Das Rich Text Format
Eine Einfache Hilfedatei verfassen
Ein verbessertes Inhaltsverzeichnis
Das Anwendungsgerüst und WinHelp
WinHelp aufrufen
Suchzeichenfolgen
WinHelp aus dem Anwendungsmenü aufrufen
Aliasbezeichner für Hilfekontext-IDs
Den Hilfekontext festlegen
Hilfe mit F1
Hilfe mit Umschalt+F1
Hilfe in Meldungsfenstern - Die Funktion AfxMessageBox
Generische Hilfe
Ein Hilfebeispiel ohne Programmierung
MAKEHELP
Hilfebefehle verarbeiten
Hilfeanforderungen mit F1
Hilfeanforderungen mit Umschalt+F1
Das Beispielprogramm EX21B - Verarbeitung von Hilfebefehlen
Header-Dateien
Die Klasse CStringView
Die Klasse CHexView
Ressourcen
Hilfedateien
Die Anwendung EX21B testen

22 Dynamische Link-Bibliotheken (DLLs)
DLL-Grundlagen
Wie Importe und Exporte abgeglichen werden
Implizite und explizite Bindung
Symbolische und ordinale Bindung
Der Eintrittspunkt in die DLL - DllMain
Instanzzugriffsnummern und das Laden von Ressourcen
Wie das Client-Programm eine DLL findet
Eine DLL testen
Normale und Erweiterungs-MFC-DLLs
Gemeinsam genutzte MFC-DLLs und Windows-DLLs
Klassen aus Erweiterungs-MFC-DLLs exportieren
Die Suchreihenfolge für Ressourcen in Programmen mit Erweiterungs-MFC-DLLs
Beispiel EX22A - Eine Erweiterungs-MFC-DLL
Beispiel EX22B - Ein Test-Client für DLLs
Normale MFC-DLLs und die von CWinApp abgeleiteten Klassen
Das Makro AFX_MANAGE_STATE
Die Suchreihenfolge für Ressourcen in Programmen mit normalen MFC-DLLs
Beispiel EX22C - Eine normale MFC-DLL
Eine Aktualisierung von EX22B - Code zum Testen von EX22C.dll
Eine DLL für benutzerdefinierte Steuerelemente
Was ist ein benutzerdefiniertes Steuerelement?
Die Fensterklasse eines benutzerdefinierten Steuerelements
Die MFC-Bibliothek und die Funktion WndProc
Benachrichtigungen von benutzerdefinierten Steuerelementen
Benutzerdefinierte Nachrichten and das Steuerelement senden
Das Beispielprogramm EX22D - Ein benutzerdefiniertes Steuerelement
Eine weitere Aktualisierung von EX22B - Code zum Testen von ex22d.dll

23 MFC-Anwendungen ohne Dokument- und Ansichtsklassen
Das Beispielprogramm EX23A - Eine Anwendung auf Dialogfeldbasis
Die InitInstance-Funktion der Anwendungsklasse
Die Dialogfeldklasse und das Programmsymbol
Das Beispielprogramm EX23B - Eine SDI-Anwendung
Das Beispielprogramm EX23C - Eine MDI-Anwendung

Teil D
ActiveX: COM, Automatisierung und OLE

24 Das Komponentenobjektmodell - COM
Grundlagen der ActiveX-Technologie
Das Komponentenobjektmodell
COM löst ein Problem
Wesentliche Merkmale von COM
Was ist eine COM-Schnittstelle?
Die Schnittstelle IUnknown und die Member-Funktion QueryInterface
Referenzzählung: Die Funktionen AddRef und Release
IClassFactory-Klassen
Die Klasse CCmdTarget
Das Beispiel EX24A - Eine simulierte COM-Anwendung
COM-Anwendungen mit der MFC-Bibliothek erstellen
Die COM-Funktion CoGetClassObject
COM und die Windows-Registrierung
Objektregistrierung zur Laufzeit
Wie ein COM-Client prozessinterne Komponenten aufruft
Wie ein COM-Client eine prozessexterne Komponente aufruft
Die MFC-Schnittstellenmakros
Die MFC-Klasse COleObjectFactory
Unterstützung für prozessinterne COM-Komponenten durch MFC-Anwendungs- und Klassen-Assistenten
Client-Programme für COM-MFC-Anwendungen
Das Beispiel EX24B - Eine MFC-gestützte prozessinterne COM-Komponente
Das Beispiel EX24C - Eine MFC-gestützter COM-Client
Einbettung und Aggregation im Vergleich zur Vererbung

25 Automatisierung
C++ mit VBA verbinden
Automatisierungsclient und Automatisierungsserver
Microsoft Excel - Ein besseres Visual Basic als Visual Basic
Eigenschaften, Methoden und Auflistungen
Automatisierung löst ein Problem
Die Schnittstelle IDispatch
Möglichkeiten der Programmierung
Die MFC-Implementierung von IDispatch
Ein MFC-Automatisierungsserver
Ein MFC-Automatisierungsclient
Einen Automatisierungsclient mit der Compileranweisung #import erstellen
Der Datentyp VARIANT
Die Klasse COleVariant
Typumwandlungen für Parameter und Rückgabewerte von Invoke
Beispiele für die Automatisierung
Das Beispiel EX25A - Automatisierungsserver ohne Benutzeroberfläche
Das Beispiel EX25B - Automatisierungsserver als DLL
Das Beispiel EX25C - Automatisierungsserver mit SDI-Benutzeroberfläche
Das Beispiel EX25D - Ein Automatisierungsclient
Frühe Bindung unter VBA
Eine Typbibliothek registrieren
Wie ein Server seine Typbibliothek registriert
Die ODL-Datei
Wie Excel Typbibliotheken verwendet
Warum frühe Bindung verwenden?
Schnellere Verbindungen zwischen Client und Server

26 Vereinheitlichter Datenaustausch - Zwischenablage und OLE-Drag-&-Drop
Die Schnittstelle IDataObject
Verbesserte Nutzung der Zwischenablage durch IDataObject
Die Strukturen FORMATETC und STGMEDIUM
Die Struktur FORMATETC
Die Struktur STGMEDIUM
Die Member-Funktionen der Schnittstelle IDataObject
MFC-Unterstützung für den vereinheitlichten Datenaustausch
Die Klasse COleDataSource
Die Klasse COleDataObject
MFC-Datenaustausch über die Zwischenablage
Die MFC-Klasse CRectTracker
Rechteckkoordinaten eines CRectTracker-Objekts konvertieren
Das Beispiel EX26A - Datentransfer über die Zwischenablage
Die Klasse CMainFrame
Die Klasse CEx26aDoc
Die Klasse CEx26aView
MFC-Unterstützung für Drag & Drop
Aktionen aufseiten der Datenquelle
Aktionen aufseiten des Zielobjekts
Ablauf einer Drag-&-Drop-Operation
Das Beispiel EX26B - OLE-Drag-&-Drop
Die Klasse CEx26bDoc
Die Klasse CEx26bView
Windows-Anwendungen und Drag-&-Drop - Dobjview
Zusammenfassung

27 Strukturierte Abfrage
Verbunddateien
Storage-Objekte und die Schnittstelle IStorage
Zeiger auf IStorage-Objekte
Den durch STATSTG belegten Speicher freigeben
Aufzählung untergeordneter Elemente eines Storage-Objekts
Gemeinsame Nutzung von Storage-Objekten durch mehrere Prozesse
Stream-Objekte und die Schnittstelle IStream
Programmierung mit IStream
Die Schnittstelle ILockBytes
Das Beispielprogramm EX27A - Strukturierte Ablage
Das Menü
Die Klasse CEx27aView
Die Arbeits-Threads
Strukturierte Ablage und persistente COM-Objekte
Die Schnittstelle IPersistStorage
Die Schnittstelle IPersistStream
Programmierung mit IPersistStream
Das Beispiel EX27B - Ein persistenter prozessinterner Server
Das Beispiel EX27C - Client-Programm für eine persistente Komponente
Fragmentierung von Verbunddateien
Vorteile von Verbunddateien

28 OLE-Server und -Container
Einbettung und direkte Aktivierung (visualle Bearbeitung)
Mini-Server und Voll-Server
Die Schattenseite der visuellen Bearbeitung
Windows-Metadateien und eingebettete Objekte
Die MFC-OLE-Architektur für Server-Programme
Das Beispiel EX28A - Ein direkt aktivierter MFC-Mini-Server
Ein eingebetteter MDI-Server?
Strategie zur Größenbemessung eines direkt aktivierbaren Servers
Zusammenwirken von OLE-Container und -Server
Die Server-Schnittstelle IOleObject
Server-Daten laden und speichern - Verbunddokumente
Datenaustausch über die Zwischenablage
Zugriff auf die Metadatei des Servers
Die Rolle der prozessinternen Behandlungsroutine
Server-Zustände
Die Container-Schnittstellen
Die Benachrichtigungsverbindung
Eine Metadatei für die Zwischenablage
Zusammenfassung der Schnittstellen
Die Schnittstelle IOleObject
Die Schnittstelle IViewObject2
Die Schnittstelle IOleClientSite
Die Schnittstelle IAdviseSink
OLE-Hilfsfunktionen
Eine OLE-Container-Anwendung
MFC-Unterstützung für OLE-Container
Einschränkungen der Container-Funktionen
Funktionen des Containers
Das Beispiel EX28B - Ein OLE-Container
Die Klasse CEx28bView
Die Klasse CEx28bDoc
Das Beispiel EX28C - Ein eingebetteter OLE-Server
Die Klasse CEx28cView
Die Klasse CEx28cDoc

29 Einführung in die ATL-Bibliothek
COM-Konzepte
Die Basisschnittstelle: IUnknown
COM-Code schreiben
COM-Klassen, die Mehrfachvererbung verwenden
Die COM-Infrastruktur
Ein anderes Anwendungsgerüst
ActiveX, OLE und COM
ActiveX, MFC und COM
Überblick über die ATL
ATLBASE.H
ATLCOM.H
ATLCONV.CPP und ATLCONV.H
ATLCTL.CPP und ATLCTL.H
ATLIFACE.IDL und ATLIFACE.H
ATLIMPL.CPP
ATLWIN.CPP und ALTWIN.H
STATREG.CPP und STATREG.H
Client-seitige ATL-Programmierung
C++-Vorlagen
Smart Pointer
Intelligente C++-Zeiger
Smart Pointer verwenden
Smart Pointer und COM
Die Smart Pointer der ATL
CComPtr
CComPtr verwenden
CComQIPtr
CComQIPtr verwenden
Nachteile der Smart Pointer-Klassen der ATL
Server-seitige ATL-Programmierung
Die ATL und COM-Klassen
Der ATL-COM-Anwendungs-Assistent
Eine COM-Klasse erstellen
Apartments und Threading
Verbindungspunkte und ISupportErrorInfo
Der Free-Threaded-Marshaler
Implementierung der Klasse CSpaceship mit der ATL
Die grundlegende ATL-Architektur
VTBL-Verwaltung
Die ATL-Version und IUnknown: CComObjectRootEx
Die ATL und QueryInterface
Die Klasse CSpaceship erweitern
Methoden zu einer Schnittstelle hinzufügen
Duale Schnittstellen
Die ATL und IDispatch
Die Schnittstellen IMotion und IVisual
Mehrere duale Schnittstellen
Zusammenfassung

30 ATL und ActiveX-Steuerelemente
ActiveX-Steuerelemente
Mit der ATL Steuerelemente entwickeln
Ein Steuerelement erstellen
Die Steuerelementarchitektur der ATL
Das Steuerelement programmieren
Zusammenfassung

Teil E
Datenbankverwaltung

31 Datenbankverwaltung mit Microsoft ODBC
Vorteile der Datenbankmanagementsysteme
SQL (Structured Query Language)
Der ODBC-Standard
Die ODBC-Architektur
ODBC-Programmierung mit dem SDK
Die ODBC-Klassen der MFC-Bibliothek - CRecordset und CDatabase
Zeilen einer Satzgruppe zählen
ODBC-Ausnahmen verarbeiten
Die Datenbank >>Student Registration<<
Das Beispielprogramm EX31A - Recordsets
Programmelemente von EX31A
Die Recordset-Klasse mit der Anwendung verknüpfung
Die Member-Funktion OnInitialUpdate der Klasse CEx31aView
Die Member-Funktion OnDraw der Klasse CEx31aView
Filter und Sortierung
Datenbanktabellen verknüpfen
Die MFC-Klasse CRecordView
Das Beispielprogramm EX31B - Eine CRecordView-Anwendung
Mehrere Recordsets
Das Beispielprogramm EX31C - Mehrere Recordsets
Parametrisierte Abfragen
ODBC-Multithreading
Abruf von Datensatzblöcken
Recordsets ohne Bindung

32 Datenbankverwaltung mit Microsoft DAO
DAO, COM und die Microsoft Jet-Datenbank-Engine
DAO und VBA
DAO und MFC
Welche Datenbanken können Sie über DAO öffnen?
DAO im ODBC-Modus - Snapshots und Dynasets
DAO-Tabellensatzgruppen
Die MFC-Klassen CDaoQueryDef und CDaoTableDef
DAO-Multithreading
Datenbankzeilen in einem Fenster mit Bildlauf anzeigen
Bildlauf-Alternativen
Die Klasse CRowView
Arbeitsteilung zwischen Basisklasse und abgeleiteten Klassen
Rein virtuelle Member-Funktionen der Klasse CRowView
Andere Member-Funktionen von CRowView
Eine dynamische Satzgruppe programmieren
Das Beispielprogramm EX32A
Die Klasse CEx32aApp
Die Klassen CMainFrame und CChildFrame
Die Klasse CEx32aDoc
Die Klasse CEx32aView
Die Klasse CTableSelect
Die Klasse CIsamSelect
Die Ressourcendatei des Beispielprogramms EX32a
Das Programm EX32A ausführen

33 OLE-DB-Vorlagen
Warum OLE DB?
Grundlegende OLE-DB-Architektur
Grundlegende Architektur der OLE-DB-Vorlagen
Aufbau der OLE-DB-Vorlagen für Nutzer
Aufbau der OLE-DB-Vorlagen für Anbieter
Einen OLE-DB-Nutzer erstellen
Den Code des OLE-DB-Nutzers verwenden
Einen OLE-DB-Anbieter erstellen
Wozu dienen OLE-DB-Anbieter?
Einen OLE-DB-Anbieter schreiben
Den Anbieter verbessern
Zusammenfassung

Teil F
Programmierung für das Internet

34 TCP/IP, Winsock und WinInet
COM oder nicht COM
Internet-Einführung
Netzwerkprotokolle - Das Schichtenmodell
IP (Internet Protocol)
UDP (User Datagram Protocol)
IP-Adressenformat
TCP (Transmission Control Protocol)
DNS (Domain Name System)
HTTP-Grundlagen
FTP-Grundlagen
Internet und Intranet
Ein eigenes Mini-Intranet einrichten
Das NT-Dateisystem und die Dateizuordnungstabelle (FAT)
Netzwerk-Hardware
Windows für den Netzwerkbetrieb konfigurieren
Host-Namen für ein Intranet - Die Datei hosts
Das Intranet testen- Das Programm Ping
Ein Intranet mit einem Computer - Die TCP/IP-Adresse für den Schleifenbetrieb
Winsock
Synchrone und asynchrone Winsock-Programmierung
Die Winsock-Klassen der MFC-Bilbliothek
Unsere Winsock-Klassen
Ein vereinfachtes HTTP-Server-Programm
Ein vereinfachtes HTTP-Client-Programm
Einen Webserver mit CHttpBlockingSocket erstellen
Serverbeschränkungen im Beispiel EX34A
Architektur des EX34A-Servers
Die Win32-Funktion TransmitFile verwenden
Die Anwendung EX34A erstellen und testen
Telnet verwenden
Einen Webclient mit CHttpBlockingSocket erstellen
Der Winsock-Client EX34A
Unterstützung für Proxy-Server
Den EX34A-Winsock-Client testen
WinInet
Vorteile von WinInet gegenüber Winsock
Die WinInet-Klassen der MFC-Bibliothek
Status-Callback-Funktionen für Internet-Sitzungen
Ein vereinfachtes WinInet-Client-Programm
Mit den MFC-WinInet-Klassen einen Webclient entwickeln
EX34A - Zweiter WinInet-Client mit OpenURL
Den WinInet-Client Nr. 2 testen
Asynchrone Moniker-Dateien
Moniker
Die MFC-Klasse CAsyncMonikerFile
Die Klasse CAsyncMonikerFile in einem Programm verwenden
Asynchrone Moniker-Dateien im Vergleich mit WinInet-Programmierung

35 Den Microsoft Internet Information Server programmieren
Alternativen zum IIS
Der Microsoft Internet Information Server
Den IIS installieren und steuern
Den Internet-Dienst-Manager ausführen
Den IIS testen
ISAPI-Server-Erweiterungen
Common Gateway Interface und ISAPI
Eine einfache GET-Anforderung für eine ISAPI-Server-Erweiterung
HTML-Formulare - GET und POST
Eine DLL mit einer ISAPI-Server-Erweiterung schreiben
Die MFC-Klassen für ISAPI-Server-Erweiterung
Ein Beispiel für eine ISAPI-Server-Erweiterung - EX35A.DLL
Der erste Schritt: Die Bestellung aufnehmen
Der zweite Schritt - Die Auftragsbestätigung bearbeiten
Die Server-Erweiterung EX35A.DLL erstellen und testen
Fehler in der DLL EX35A beseitigen
ISAPI-Datenbankzugriff
Transaktionen mit Hilfe von HTTP-Cookies verknüpfen
Wie Cookies funktionieren
Wie eine ISAPI-Server-Erweiterung Cookies verarbeitet
Probleme mit Cookies
Echtheitsbestätigung im WWW
Standard-Echtheitsbestätigung
Echtheitsbestätigung unter Windows NT
SSL (Secure Sockets Layer)
ISAPI-Filter
Eine ISAPI-Filter-DLL schreiben
MFC-Klassen für ISAPI-Filter
Ein Beispiel für einen ISAPI-Filter - EX35B.DLL, EX35C.EXE
Eine Benachrichtigung auswählen
Transaktionsdaten zum Anzeigeprogramm senden
Das Anzeigeprogramm
Den ISAPI-Filter EX35B erstellen und testen

36 ActiveX-Document-Server und das Internet
Theoretische Grundlagen für ActiveX-Dokumente
ActiveX-Document-Server und eingebettete OLE-Server
Einen ActiveX-Document-Server im Internet Explorer 4.0 ausführen
ActiveX-Document-Server und ActiveX-Steuerelemente
OLE-Schnittstellen für ActiveX-Document-Server und -Container
MFC-Unterstützung für ActiveX-Document-Server
Die Klasse COleServerDoc
Die Klasse CDocObjectServerItem
Die Klasse CDocObjectServer
Die Klasse COleDocIPFrameWnd
EX36A - Ein Beispielprogramm für einen ActiveX-Document-Server
Die erste Ausbaustufe von EX36A - Ein einfacher Server
Fehlersuche bei einem ActiveX-Document-Server
Die zweite Ausbaustufe von EX36A - WinInet-Aufrufe
EX36B - Ein weiterer ActiveX-Document-Server
POST-Anforderungen programmgesteuert generieren
Die Ansichtsklasse von EX36B
EX36B erstellen und testen
ActiveX-Document-Server und VB Script
Weiterführende Möglichkeiten für ActiveX-Document-Server

37 Einführung in Dynamic HTML
Das DHTML-Objektmodell
Visual C++ und DHTML
MFC und DHTML
Die ATL und DHTML
Weitere Informationen

38 Visual C++ für Windows CE
Windows CE-Geräte
Windows CE und Windows 98 und Windows NT
Visual C++ for Windows CE
Die MFC-Bibliothek für Windows CE
Die Mini-MFC verwenden
Eine vorhandene MFC-Anwendung auf Windows CE portieren
Die ATL und Windows CE
Weitere Informationen zu Windows CE

Teil G
Anhänge

A Nachrichtenbehandlungsroutinen der MFC-Bibliothek
Routinen für WM_COMMAND-Nachrichten
Behandlungsroutinen für Benachrichtigungen untergeordneter Fenster
Behandlungsroutinen für Fensterbenachrichtigungen
Benutzerdefinierte Nachrichtencodes

B MFC-Klassenidentifikation und dynamische Objekterstellung
Den Namen der Objektklasse zur Laufzeit ermitteln
Die MFC-Struktur CRuntimeClass und das Makro RUNTIME_CLASS
Dynamische Erstellung
Ein Beispielprogramm

Stichwortverzeichnis

Die Autoren