Inside Visual C++.NET



Ähnliche Dokumente
Visual C++ Windows-Programmierung mit den MFC. Frank Budszuhn. ADDISON-WESLEY An imprint of Pearson Education

Frank Budszuhn Thomas Reichel. Visual C Windows-Programmierung mit den MFC ADDISON-WESLEY. An imprint of Addison Wesley Longman, Inc.

12. Dokumente Speichern und Drucken

Inhaltsverzeichnis. Einleitung 11 Über die Autorin 12 Danke 13 Über das Buch 13 Der Aufbau des Buches 14 Die CD-ROM zum Buch 14

VB.net Programmierung und Beispielprogramm für GSV

Entwicklung mit Arbortext Editor 6.1

Inhaltsverzeichnis. Einleitung... 11

SANDBOXIE konfigurieren

Inhaltsverzeichnis. Einleitung Über die Autorin Danke Über das Buch Der Aufbau des Buches Die CD-ROM zum Buch...

Lösungen entwickeln mit Microsoft Excel 95

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Dazu stellen Sie den Cursor in die Zeile, aus der eine Überschrift werden soll, und klicken auf die gewünschte Überschrift.

Schnellstarthandbuch. Hilfe aufrufen Klicken Sie auf das Fragezeichen, um Hilfeinhalt anzuzeigen.

Microsoft Visual Studio Community 2015

LÖSUNGEN AUFGABEN: EXCEL XP (OHNE DATEIEN)

Inhaltsverzeichnis. Teil I Grundlagen der Programmarchitektur Vorwort... XIII XV XVI XVI

Installation des edu- sharing Plug- Ins für Moodle

Dialogfeld «Speichern unter» öffnen und unter Dateityp «Word Dokument mit Makros» wählen. Das Dokument wird mit der Endung.dotm abgespeichert.

Macher Solutions Produktinformation SAP Crystal Reports 2011

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Installationsanleitung für ADSL mit Netzwerkanschluß unter Windows Millennium:

HTBVIEWER INBETRIEBNAHME

32.4 Anpassen von Menüs und Symbolleisten 795i

Erstellen sicherer ASP.NET- Anwendungen

VDW Statistik Portal Häufig gestellte Fragen. Version 1.2 ( Katharina Düngfelder & Markus A. Litters) Vorwort

7.9 Webseiten in ELO archivieren

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

Smartphone 4.1. Was ist neu bei Smartphone 4.1

Inhaltsverzeichnis VII

Dateipfad bei Word einrichten

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Erstellen eines Formulars

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Teil A Grundlagen 31

Objektorientierte Programmierung OOP

ANLEITUNG ONECLICK WEBMEETING BASIC MIT NUR EINEM KLICK IN DIE WEBKONFERENZ.

OP-LOG

Arbeiten mit UMLed und Delphi

2.1 Sicherheits-Zonen ActiveX-Steuerelemente Skripting Verschiedenes Erweitert... 9

Zu diesem Buch 1. Was ist neu in Excel 2007? 5. Erste Schritte mit Excel Danksagung... xi

Herzlich willkommen zum Kurs "MS Word 2003 Professional"

BricsCAD System Variablen

OUTLOOK-DATEN SICHERN

Bauteilattribute als Sachdaten anzeigen

Motivation im Betrieb

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Kurzbeschreibung S&S Arbeitszeiterfassung

Updatehinweise für die Version forma 5.5.5

Eine Anleitung, wie Sie Mozilla Thunderbird 2 installieren und konfigurieren können. Installation Erstkonfiguration... 4

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Inhaltsverzeichnis. Teill 17 Einleitung 18

Office-Programme starten und beenden

System-Update Addendum

Vorkurs C++ Programmierung

U M S T I E G MICROSOFT OFFICE WORD 2003 WORD auf. Einführungsschulung - So finden Sie Sich im neuen Layout zurecht. ZID/D. Serb/ Jän.

Installation Citrix Receiver unter Windows 8

3a Open BIM Workflow - Import und Weiterbearbeitung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Ev. Kirche Hirschlanden

Installieren von Microsoft Office Version 2.1

:LQGRZV([SORUHU &KULVWLQH%HHU

Zwischenablage (Bilder, Texte,...)

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

Allgemeine Menüpunkte in den Frilo- FDC-Programmen (Frilo.Data.Control)

Web Engineering.

GEONET Anleitung für Web-Autoren

PowerWeiss Synchronisation

Mediator 9 - Lernprogramm

i i apitel apitel K K Inhalt Inhalt

Dieses Dokument soll dem Administrator helfen, die ENiQ-Software als Client auf dem Zielrechner zu installieren und zu konfigurieren.

Ich möchte eine Bildergalerie ins Internet stellen

Datenaustausch mit dem BVK Data Room

Anleitung zur Installation von Tun EMUL 12.0

Inhalt. Teil I: Qt für Einsteiger Über die Autoren Vorwort Einleitung Danksagungen... 21

Dreamweaver 8 Einführung

H A N D B U C H FILEZILLA. World4You Internet Service GmbH. Hafenstrasse 47-51, A-4020 Linz office@world4you.com

Erstellen eines Office-COM-Add-In mit Visual Basic 2005 Express Edition

Installationshinweise BEFU 2014

Speichern. Speichern unter

Office in Java. 2. Info-Point Urs Frei

Charles Petzold. Windows 95. Programmierung ; ' :,:" 'üijijsarkmüw.flsfflfi <<>\ lll i '»,, 'S ) ;ji*roi/;>w >JG

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Drucken aus der Anwendung

Im folgenden wird die Outlookanbindung an organice/pi beschrieben.

Installationsanleitung für Lancom Advanced VPN Client zum Zugang auf das Format ASP System

Programm GArtenlisten. Computerhinweise

Installation des edu-sharing Plug-Ins für Moodle

transfer.net Erste Schritte mit transfer.net

Tastatur auf Hebräisch umstellen

POWERPOINT-EINFÜHRUNG. Inhaltsverzeichnis

2. Word-Dokumente verwalten

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in der Software 6.0

Software-Lizenzierung und Aktivierung: Verteilen von Software mit Apple Remote Desktop

Step by Step Webserver unter Windows Server von Christian Bartl

Microsoft Access 2010 Bilder

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Einrichtung von VPN-Verbindungen unter Windows NT

Interoperabilität mit Office-Anwendungen (1)

So funktioniert das papierlose Rechnungswesen

Installation Citrix Receiver unter Windows 7

Transkript:

George Shepherd, David Kruglinski Inside Visual C++.NET ':"5-;--1 <;! :,;% I Microsoft

Danksagung XXVII Einfiihrung., XXIX.NET, MFC und ATL XXIX Verwaltetes C++ und C# XXX.NET und Java XXXI Zielgruppe dieses Buchs XXXI Was hier nicht behandelt wird XXXII Verwendung dieses Buchs XXXII Aufbau dieses Buchs XXXII Teil I: Einfiihrung in Windows, Visual C++.NET und die Grundlagen des MFC-Anwendungsgeriists XXXII Teil II: Die Ansichtsklassen der MFC-Bibliothek XXXIII Teil III: Die Dokument/Ansicht-Architektur XXXIII Teil IV: COM, Automatisierung, ActiveX und OLE XXXIII Teil V: Programmierung fur das Internet XXXIV Teil VI:.NET und dariiber hinaus XXXIV Anhange XXXIV Win32 und Winl6 XXXIV Anforderungen an das System XXXIV Beispielprogramme XXXV Windows Forms XXXV Support XXXVI Teil I Windows, Visual C++.Net und die Grundlagen des Anwendungsgeriists... 1 1 Windows und Visual C++.NET 3 Das Windows-Programmiermodell 3 Meldungsbearbeitung 3 Graphics Device Interface (GDI) 4 Ressourcengestiitzte Programmierung 5 Speicherverwaltung 5 DLLs (Dynamic Link Libraries) 5 Die Win32-Programmierschnittstelle 6 Die Visual C++.NET-Komponenten 6 Visual C++.NET und der Erstellungsprozess 7 Das Ressourcenansichtsfenster und die Ressourcen-Editoren 9 VII

C-/C++-Compiler 10 Quelltext-Editor 10 Ressourcencompiler 10 Linker 10 Debugger 11 MFC-Anwendungsassistent 12 Klassenansicht 13 Projektmappenexplorer 13 Objektbrowser 13 UML-Werkzeuge 14 Onlinehilfe 14 Windows-Diagnosewerkzeuge 15 MFC-Bibliothek Version 7 15 ATL-Bibliothek Version 7.0 15.NET-Unterstiitzung 16 2 Das MFC-Anwendungsgeriist 17 Warum gibt es das Anwendungsgerust? 17 Einarbeitungszeit 21 Was ist ein Anwendungsgerust? 22 Anwendungsgerust im Vergleich zu Klassenbibliothek 22 Beispiel fur ein Anwendungsgerust 22 MFC-Meldungszuordnung 25 Dokumente und Ansichten 26 Teil II MFC-Grundlagen 29 3 Einstieg mit dem MFC-Anwendungsassistenten:»Hello, world!«31 Was versteht man unter einer Ansicht? 32 MFC-Anwendungsarten 32 Benutzeroberflachen der MFC-Bibliothek 33 Ex03a: Die Minimalanwendung 33 Die Ansichtsklasse CExO3aView 38 Datenanzeige im Ansichtsfenster 38 Die Memberfunktion OnDraw 38 Der Windows-Geratekontext 39 Anzeigecode in das Programm ExO3a einfiigen 39 Vorschau auf die Ressourcen-Editoren 40 Der Inhalt von ExO3a.rc 40 Experimente mit den Ressourcen-Editoren 41 Konfigurationen»Win32 Debug«und»Win32 Release* 42 Vorkompilierte Headerdateien 43 Zwei Methoden der Programmausfuhrung 45 VIII

4 Visual C++.NET-Assistenten 47 Die verschiedenen Arten von Assistenten 47 So funktionieren Assistenten 48 Entwicklung eines Assistenten 49 Erstellung eines Assistenten zur Entwicklung von Webanwendungen mit verwaltetem C++ 50 5 Windows-Meldungen 57 Benutzereingaben verarbeiten: Meldungszuordnungen 57 Die Meldungszuordnung 58 Den Zustand eines Ansichtsobjekts speichern: Datenelemente 58 Was sind ungiiltige Rechtecke? 59 Der Clientbereich eines Fensters ; 60 Berechnungen mit CRect, CPoint und CSize 60 Liegt ein Punkt in einem Rechteck? 60 Der CRect-OperatOT LPCRECT 61 Liegt ein Punkt innerhalb einer bestimmten Ellipse? 61 Das Beispielprogramm Ex05a 61 Die Klassenansicht und Ex05a 64 Abbildungsmodi 67 Der Abbildungsmodus MMJTEXT 68 Abbildungsmodi mit fester Skalierung 69 Abbildungsmodi mit variabler Skalierung 69 Koordinatenumwandlung 71 Das Beispielprogramm ExO5b: Umwandlung in den Abbildungsmodus MMJilMETRIC 73 Ein bildlauffahiges Ansichtsfenster 74 GroBe von Fenster und Ausgabebereich 74 Bildlaufleisten 74 Bildlaufalternativen 75 Die Funktion OnlnitialUpdate 75 Eingaben von der Tastatur annehmen 75 Das Beispielprogramm ExO5c: Bildlauf 75 Weitere Windows-Meldungen 79 Die Meldung WMJOREATE 79 Die Meldung WMjCLOSE 79 Die Meldung WM_QUERYENDSESSION 79 Die Meldung WM_DESTROY 79 Die Meldung WM_NCDESTROY 80 6 GDI-Funktionen, Schriften und Bitmaps 81 Die Geratekontextklassen 81 Die Bildschirmkontextklassen CClientDC und CWindowDC 82 CDC-Objekte anlegen und entsorgen 82 Der Zustand des Geratekontexts 83 Die Klasse CPaintDC 84 IX

GDI-Objekte 84 GDI-Objekte anlegen und entsorgen 85 GDI-Objekte iiberwachen 85 Vordefinierte GDI-Objekte 86 Wie lange gilt eine GDI-Auswahl? 86 Schriften 87 Schriften sind GDI-Objekte 87 Eine Schrift auswahlen 88 Schriften drucken 88 Schriften anzeigen 88 Logische und tatsachliche BildschirmmaKe 89 Die Zeichenhohe berechnen 90 Das Beispielprogramm ExO6a." 90 Elemente des Programms ExO6a 93 Das Beispielprogramm ExO6b 94 Die Elemente des Programms ExO6b 96 Das Beispielprogramm ExO6c: Noch einmal CScrollViezv 97 Elemente des Programms ExO6c 99 SetScaleToFitSize-Modus in CScrollViezv 101 Den Abbildungsmodus fur logische Twips in bildlauffahigen Ansichten verwenden 101 Bitmaps 102 GDI-Bitmaps und gerateunabhangige Bitmaps 102 Farbige Bitmaps und monochrome Bitmaps 103 DIBs und die Klasse CDib 103 Anmerkungen zur Palettenprogrammierung 104 DIBs, Pixel und Farbtabellen 105 Die Struktur einer DIB in einer BMP-Datei 105 Zugriffsfunktionen fur DIBs 106 Die Klasse CDib 107 Die Anzeigegeschwindigkeit von DIBs 112 Das Beispielprogramm ExO6d.. 113 Weitere Moglichkeiten zur DIB-Programmierung 115 Die Funktion Loadlmage 115 Die Funktion DrawDibDraw 116 Schaltflachen mit Bitmaps belegen 117 Das Beispielprogramm ExO6e 118 Weitere Moglichkeiten fur Bitmap-Schaltflachen 120 7 Dialogfelder 121 Modale und nichtmodale Dialogfelder 121 Ressourcen und Steuerelemente 122 Programmierung eines modalen Dialogfelds 122 Das Beispiel ExO7a: Der Dialog aller Dialoge 124 Das Dialogfeld entwickeln 124 Erstellung der Dialogklasse 130 Das Dialogfeld mit der Ansicht verkniipfen 134 Erlauterungen zur Anwendung ExO7a 136

Erweiterung des Programms ExO7a 137 Anderung von OnOK 137 Verarbeitung von OnCancel 139 Einbindung der Bildlaufleisten 139 Identifizierung von Steuerelementen: IDs und CWwd-Zeiger 140 Die Hintergrundfarbe fur Dialogfelder und Steuerelemente festlegen 141 Dialogsteuerelemente zur Laufzeit hinzufiigen 142 Andere Steuerelementfunktionen verwenden 142 Die Standarddialogfelder von Windows 142 Direkter Einsatz der Klasse CFileDialog 143 Klassen von Standarddialogfeldklassen ableiten 143 Verschachtelte Dialogfelder 144 Ein Beispiel mit CFileDialog: EX07B..' 144 Weitere Anpassungsmoglichkeiten von CFileDialog 149 Nichtmodale Dialogfelder 150 Nichtmodale Dialogfelder erstellen 150 Benutzerdefinierte Meldungen 150 Besitzverhaltnisse 151 Das Beispiel ExO7c: Ein nichtmodales Dialogfeld 151 8 Allgemeine Steuerelemente 159 Allgemeine Standardsteuerelemente 159 Das Steuerelement Statuskontrolle 160 Das Schieberegler-Steuerelement 160 Das Drehfeld 161 Das Listensteuerelement 161 Die Strukturansicht 161 Die Meldung WM_NOTIFY 162 Das Beispiel ExO8a: Allgemeine Steuerelemente 162 Weitere allgemeine Steuerelemente 174 Das Datums-/Zeitauswahl-Steuerelement 174 Das Monatskalender-Steuerelement 175 Das IP-Adressensteuerelement 176 Das erweiterte Kombinationsfeld 176 Das Beispielprogramm ExO8b: Weitere allgemeine Steuerelemente 177 9 ActiveX-Steuerelemente verwenden 189 ActiveX-Steuerelemente im Vergleich zu normalen Windows-Steuerelementen 190 Normale Steuerelemente im Riickblick -.-... 190 Ahnlichkeiten zwischen ActiveX-Steuerelementen und normalen Steuerelementen 191 Unterschiede zwischen ActiveX-Steuerelementen und normalen Steuerelementen: Eigenschaften und Methoden 191 ActiveX-Steuerelemente installieren 192 Das Kalender-Steuerelement 193 Programmierung von ActiveX-Steuerelementcontainern 195 Zugriff auf Eigenschaften 195 C++-Klassen fur ActiveX-Steuerelemente 196 XI

Unterstutzung des MFC-Anwendungsassistenten fur ActiveX-Steuerelemente... 198 Der MFC-Klassenassistent und das Container-Dialogfeld 198 ActiveX-Steuerelemente im Speicher halten 199 Das Beispielprogramm ExO9a: Ein Dialogfeld als ActiveX-Steuerelementcontainer... 200 ActiveX-Steuerelemente in HTML-Dateien 207 ActiveX-Steuerelemente zur Laufzeit erstellen 207 Das Beispielprogramm ExO9b: Das ActiveX-Webbrowser-Steuerelement 208 Bildeigenschaften 211 Bindbare Eigenschaften: Anderungsbenachrichtigungen 212 10 Speicherverwaltung unter Win32 215 Prozesse und Speicherbereiche 216 Der Prozessadressraum unter Windows 95/98 217 Der Prozessadressraum unter Windows NT/2000/XP 217 Das Konzept des virtuellen Arbeitsspeichers 219 Die Funktion VirtualAlloc: reservierter und verfugbarer Speicher 221 Heap-Funktionen und GlobalAlloc-Funktionen 222 Der Heap fiir kleine Blocke, die Operatoren new und delete und die Funktion Jkeapmin 223 Speicherbilddateien 224 Zugriff auf Ressourcen 225 Tipps zum Umgang mit dynamischem Speicher 226 Speicherstrategien fiir konstante Daten 226 11 Meldungsbearbeitung und Multithread-Programmierung unter Windows 229 Meldungsbearbeitung unter Windows 229 Wie ein Programm mit einem einzigen Thread Meldungen bearbeitet 230 Die Kontrolle abgeben 230 Zeitgeber 231 Das Programm Exlla 231 Leerlaufroutinen 234 Multithread-Programmierung 235 Einen Arbeitsthread schreiben und starten 235 Wie der Hauptthread mit einem Arbeitsthread kommuniziert 236 Wie der Arbeitsthread mit dem Hauptthread kommuniziert 237 Das Programm Exllb 238 Ereignisse zur Synchronisation von Threads einsetzen 239 Das Programm ExOllc. 240 Threads blockieren... 241 Kritische Abschnitte 242 Mutexe und Semaphore 244 Benutzeroberflachenthreads 244 XII lnhaltsverzeichnis

Teil III Die Dokument/Ansicht-Architektur 245 12 Menus, Zugriffstasten, das Rich-Edit-Steuerelement und Eigenschaftsblatter... 247 Hauptrahmenfensterklassen und Dokumentklassen 248 Windows-Menus 249 Zugriffstasten 250 Befehlsausfiihrung 250 Befehlsausfiihrung in abgeleiteten Klassen 251 Befehle zur Aktualisierung der Benutzeroberflache 251 Aus Dialogfeldern stammende Befehle 252 Die Standardmeniibefehle des Anwendungsgeriists 253 Meniibefehle freischalten oder sperren. f 253 MFC-Textverarbeitungsoptionen 254 Die Klasse CEditViezv -. 254 Die Klasse CRichEditView 254 Die Klasse CRichEditCtrl 254 Das Beispiel Exl2a 255 Eigenschaftsblatter 260 Eigenschaftsblatter erstellen 260 Datenaustausch in Eigenschaftsblattern 261 Das Beispielprogramm Exl2a wird iiberarbeitet 262. Die Schaltflache Ubernehmen 271 Die Klasse CMenu 272 Kontextmeniis erstellen 272 Erweiterte Befehlsverarbeitung 273 13 Symbol- und Statusleisten 275 Steuerleisten und das Anwendungsgerust 275 Symbolleisten 276 Symbolleisten-Bitmaps 276 Schaltflachenzustande 277 Symbolleisten und Befehlsmeldungen 277 Aktualisierungshandler fiir Symbolleisten 278 Quicklnfos 279 Die Suche nach dem Hauptrahmenfenster 279 Das Beispielprogramm Exl3a: Symbolleisten 280 Statusleisten 284 Definition der Statusleiste 284 Die Meldungszeile 285 Die Statusanzeige 285 Steuerung der Statusleiste 286 Das Beispielprogramm Exl3b: Statusleiste 287 Infoleisten 291 Aufbau einer Infoleiste 291 Das Beispielprogramm Exl3c: Infoleiste 292 XIII

14 Eine wiederverwendbare Rahmenfensterklasse 297 Warum wiederverwendbare Basisklassen schwer zu schreiben sind 298 Die Klasse CPersistentFrame 298 Die Klasse CFrameWnd und die Funktion ActivateFrame 299 Die Funktion PreCreateWindozv 299 Die Windows-Registrierung 300 Mit der Klasse CString arbeiten 302 Die Position eines maximierten Fensters 304 Der Zustand der Steuerleiste und die Registrierung 305 Statische Datenelemente 305 Das Standard-Fensterrechteck 305 Das Beispielprogramm Exl4a: Eine persistente Rahmenfensterklasse 306 Persistente Rahmenfenster in MDI-Anwendungen 310 15 Trennung von Dokument und Ansicht 313 Funktionen fiir die Interaktion zwischen Dokument und Ansicht 314 Die Funktion CViezvr.GetDocument 314 Die Funktion CDocumentr.UpdateAUViews 315 Die Funktion CViezv::OnUpdate 315 Die Funktion CView::OnInitialUpdate 316 Die Funktion CDocumentr.OnNezvDocument 316 Eine einfache Dokument/Ansicht-Anwendung 316 Die,Klasse CFormViezv 317 Die Klasse CObject 318 Diagnosedumps 318 Das Makro TRACE 319 Das Objekt afxdump 319 Der Dumpkontext und die Klasse CObject 320 Automatischer Dump von nicht geloschten Objekten 321 Das Beispielprogramm Exl5a: Ein einfaches Dokument/Ansicht-Beispiel 323 Eine etwas komplexere Interaktion zwischen Dokument und Ansicht 329 Die Funktion CDocument::DeleteContents 330 Die Listenklasse CObList. 330 Eine FIFO-Liste auf der Basis von CObList 331 Die Elemente von CObList durchlaufen: Die POS/T/ON-Variable 332 CTypedPtrList: eine Listenklasse auf der Basis von Vorlagen 333 Die Funktion Dump und die Listenklassen 333 Das Beispielprogramm Exl5b: Eine SDI-Anwendung mit mehreren Ansichten 334 Ressourcen 335 Quelltext 336 Geschiitzte virtuelle Funktionen 347 Test der Anwendung Exl5b 348 Zwei Ubungen fiir den Leser 348 16 Dokumente lesen und schreiben 349 Was ist Serialisierung? 350 Dateien und Archive 350 Eine Klasse serialisierbar machen 351 XIV

Eine Serialize-Funktion schreiben 351 Aus Archiven lesen: Eingebettete Objekte oder Zeiger? 352 Auflistungen serialisieren 354 Die Funktion Serialize und das Anwendungsgerust 354 Die SDI-Anwendung 355 Das Windows-Anwendungsobjekt 355 Die Dokumentvorlagenklasse 356 Die Dokumentvorlagenressource 358 Mehrere Ansichten fiir ein SDI-Dokument 358 Ein leeres Dokument erstellen: die Funktion CWinApp::OnFileNezv 358 Die Funktion OnNewDocument in der Dokumentklasse 359 Dateien offnen: die Funktion OnFileOpen 360 Die Funktion DeleteContents der Dokumentklasse 360 Dateien speichern: OnFileSave und OnFileSaveAs 360 Das Anderungsflag des Dokuments 361 Das Beispielprogramm Exl6a: SDI mit Serialisierung 362 Die Klasse CStudent 362 CExl6aApp 362 CMainFrame 366 CExWaDoc 369 CExWaViezv 370 Die Anwendung Exl6a testen 370 Dokumente aus dem Windows-Explorer laden 370 Programmregistrierung 371 Doppelklick auf ein Dokument 371 Drag & Drop aktivieren 372 Startparameter von Programmen angeben 372 Start im Explorer und die Drag & Drop-Funktionen ausprobieren 372 MDI-Anwendungen 373 Eine'typische MDI-Anwendung im MFC-Stil 373 Das MDI-Anwendungsobjekt 374 Die MDI-Dokumentvorlagenklasse 374 Das MDI-Rahmenfenster und die untergeordneten MDI-Fenster 375 Ressourcen fiir Hauptrahmenfenster und Dokumentvorlagen 376 Ein leeres Dokument erstellen 377 Eine zusatzliche Ansicht fiir ein vorhandenes Dokument erstellen 378 Dokumente offnen und speichern 378 Mehrere Dokumentvorlagen 378 Dokumente aus dem Windows-Explorer laden und per Drag & Drop verschieben 379 Das Beispiel Exl6b: eine MDI-Anwendung 380 CExl6bApp 380 CMainFrame 383 CChildFrame 386 Die Anwendung Exl6b testen 388 MTI-Anwendungen 388 Das Beispiel Exl6c: Eine MTI-Anwendung 388 Test der Anwendung Exl6c 390 XV

17 Drucken und Seitenansicht 391 Drucken unter Windows 391 Standarddialogfelder zur Druckersteuerung 392 Druckseiten interaktiv auswahlen 393 Bildschirmseiten und Druckseiten 393 Seitenansicht 394 Druckausgaben programmieren 394 Der Druckergeratekontext und die Funktion CViewr.OnDrazv 394 Die Funktion CViezvr.OnPrint 394 Den Geratekontext vorbereiten: Die Funktion CViezvr.OnPrepareDC 395 Beginn und Ende eines Druckauftrags 395 Das Beispiel Exl7a: Ein WYSIWYG-Druckprogramm 396 Den bedruckbaren Bereich ermitteln 401 Die Klasse CArray 402 Das Beispiel Exl7b: Mehrere Seiten drucken 403 18 Teilbare Fenster und Mehrfachansichten 409 Teilbare Fenster 410 Ansichtsoptionen 410 Dynamische und statische Fensterteilung 411 Beispiel Exl8a: Eine SDI-Anwendung mit einer Ansichtsklasse und dynamisch teilbarem Fenster 411 - Ressourcen fiir die Fensterteilung 412 CMainFrame 412 Die Anwendung Exl8a testen 413 Das Beispiel Exl8b: Eine SDI-Anwendung mit zwei Ansichtsklassen und statisch geteiltem Fenster 413 CHexView 414 CMainFrame 414 Die Anwendung Exl8b testen 415 Das Beispiel Exl8c: Verschiedene Ansichten ohne teilbares Fenster 416 Ressourcen 416 CMainFrame 416 Die Anwendung Exl8c testen. 417 Das Beispiel Exl8d: Eine MDI-Anwendung mit mehreren Ansichtsklassen 418 Ressourcen 419 CExl8dApp / 419 CMainFrame '. 420 Die Anwendung Exl8d testen 421 19 Kontextabhangige Hilfe 423 WinHelp oder HTML Help? 423 Das WinHelp-Programm 425 Das Rich Text Format 425 Eine einfache Hilfedatei verfassen 426 Ein verbessertes 431 Das Anwendungsgerust und WinHelp 431 WinHelp aufrufen 432 XVI

Schliisselworter und Textsuche 432 WinHelp aus dem Anwendungsmenii aufrufen 433 Aliasbezeichner fur Hilfekontext-IDs 433 Den Hilfekontext festlegen 433 Hilfe mit Fl 434 Hilfe mit Umschalt+Fl 434 Hilfe in Meldungsfeldern: Die Funktion AfxMessageBox 435 Generische Hilfe 435 Ein Hilfebeispiel ohne Programmierung 436 Hilfebefehle verarbeiten 438 Hilfeanforderungen mit Fl 438 Hilfeanforderungen mit Umschalt+Fl 439 Das Beispielprogramm Exl9b: Verarbeitung von Hilfebefehlen 439 Headerdateien 439 CStringView 439 CHexView 440 Ressourcen 440 Hilfedateien 441 Die Anwendung Exl9b testen 441 MFC und HTML Help 442 Beispiel Exl9c: HTML Help 442 20 Dynamic Link Libraries (DLLs) 445 DLL-Grundlagen 445 Wie Importe und Exporte abgeglichen werden 446 Implizite und explizite Bindung 447 Symbolische und ordinale Bindung 448 Der Eintrittspunkt in die DLL: DUMain 448 Instanzhandles und das Laden von Ressourcen 449 So fihdet das Clientprogramm eine DLL 449 Eine DLL testen 450 MFC: Normale und Erweiterungs-DLLs 450 Klassen aus Erweiterungs-MFC-DLLs exportieren 451 Die Suchreihenfolge fiir Ressourcen in Programmen mit Erweiterungs-MFC-DLLs 452 Beispiel Ex20a: Eine Erweiterungs-MFC-DLL 452 Beispiel Ex20b: Ein Testclient fur DLLs 454 Normale MFC-DLLs: Die Struktur AFX_EXTENSION_MODULE 455 Das Makro AFX_MANAGE_STATE : r... 455 Die Suchreihenfolge fiir Ressourcen in Programmen mit normalen MFC-DLLs 455 Beispiel Ex20c: Eine normale MFC-DLL 455 Eine Aktualisierung von Ex20b: Code zum Testen von Ex20c.dll 457 Eine DLL mit einem benutzerdefinierten Steuerelement 459 Was ist ein benutzerdefiniertes Steuerelement? 459 Die Fensterklasse eines benutzerdefinierten Steuerelements 459 Die MFC-Bibliothek und die Funktion WndProc 460 Benachrichtigungen von benutzerdefinierten Steuerelementen 460 XVII

Benutzerdefinierte Meldungen an das Steuerelement senden 461 Das Beispielprogramm Ex20d: Ein benutzerdefiniertes Steuerelement 461 Eine weitere Uberarbeitung von Ex20b: Code zum Testen von Ex20d.dll 466 21 MFC-Anwendungen ohne Dokument- und Ansichtsklassen 469 Das Beispielprogramm Ex21a: Eine Anwendung auf Dialogfeldbasis 469 Die Initlnstance-Funktion der Anwendungsklasse 471 Die Dialogfeldklasse und das Programmsymbol 472 Das Beispielprogramm Ex21b: Eine SDI-Anwendung 473 Das Beispielprogramm Ex21c: Eine MDI-Anwendung 475 Teil IV COM, Automation, ActiveX und OLE....' 477 22 Das Komponentenobjektmodell COM 479 Die Grundlagen von ActiveX 479 Was ist COM? 480 Wesentliche Merkmale von COM 480 Was ist eine COM-Schnittstelle? 481 Die Schnittstelle IUnknown und die Memberfunktion Querylnterface 486 Referenzzahlung: Die Funktionen A ddref und Release 488 Klassenfactory 489 Die Klasse CCmdTarget 490 Das Beispiel Ex22a: Eine simulierte COM-Anwendung 491 COM-Anwendungen mit der MFC-Bibliothek erstellen 497 Die COM-Funktion CoGetClassObject 498 COM und die Windows-Registrierung 498 Objektregistrierung zur Laufzeit 500 Wie ein COM-Client prozessinterne Komponenten aufruft 500 Wie'ein COM-Client eine prozessfremde Komponente aufruft 502 Die MFC-Schnittstellenmakros 504 Die MFC-Klasse COleObjectFactory 505 Unterstiitzung fur prozessinterne COM-Komponenten durch Assistenten 506 Clientprogramme fiir COM-MFC : Anwendungen 508 Das Beispiel Ex22b: Eine MFC-gestiitzte prozessinterne COM-Komponente 508 Das Beispiel Ex22c: Ein MFC-gestutzter COM-Client 512 Einbettung und Aggregation im Vergleich zur Vererbung 513 23 Automatisierung 517 Entwicklung von C++-Komponenten fur VBA 518 Automatisierungsclients und Komponenten 518 Microsoft Excel: Ein besseres Visual Basic als Visual Basic 519 Eigenschaften, Methoden und Auflistungen 521 Automatisierungsschnittstellen 522 Die Schnittstelle IDispatch 522 Moglichkeiten der Programmierung 523 Die MFC-Implementierung von IDispatch 525 Eine MFC-Automatisierungskomponente 525 XVIII

Ein MFC-Automatisierungsclient 526 Einen Automatisierungsclient mit der Compilerdirektive #import erstellen 529 Der Datentyp VARIANT 530 Die Klasse COleVariant 531 Typumwandlungen fiir Parameter und Riickgabewerte von Invoke 533 Beispiele fiir die Automatisierung 534 Das Beispiel Ex23a: Automatisierungsserver ohne Benutzeroberflache 535 Das Beispiel Ex23b: Automatisierungskomponente als DLL 543 Das Beispiel Ex23c: Automatisierungskomponente mit SDI-Benutzeroberflache.. 551 Das Beispiel Ex23d: Ein Automatisierungsclient 557 Das Beispiel Ex23e: Ein weiterer Automatisierungsclient 572 Fruhe Bindung unter VBA 575 Eine Typbibliothek registrieren > 575 Wie eine Komponente ihre Typbibliothek registriert 575 Die IDL-Datei 576 Wie Excel eine Typbibliothek benutzt 577 Warum fruhe Bindung verwenden? 578 Schnellere Verbindungen zwischen Client und Komponente 578 24 Vereinheitlichter Datenaustausch: Zwischenablage und OLE-Drag & Drop 579 Die Schnittstelle IDataObject 579 Verbesserte Nutzung der Zwischenablage durch IDataObject 580 Die Strukturen FORMATETC und STGMEDIUM 581 " FORMATETC 581 Die Struktur STGMEDIUM 581 Die Memberfunktionen der Schnittstelle IDataObject 582 Andere Memberfunktionen der Schnittstelle IDataObject: Hinweisverbindungen 583 MFC-Unterstiitzung fiir den vereinheitlichten Datenaustausch (UDT) 583 Die Klasse COleDataSource 583 Die Klasse COleDataObject 584 MFC-Datenaustausch iiber die Zwischenablage 585 Die MFC-Klasse CRectTracker 587 Koordinaten eines CRectTracker-Ob\ekts konvertieren 588 Das Beispiel Ex24a: Datentransfer iiber die Zwischenablage 589 Die Klasse CMainFrame 590 Die Klasse CEx24aDoc.. 590 Die Klasse CEx24aView 590 MFC-Unterstiitzung fur Drag & Drop 596 Die Seite der Datenquelle 597 Die Seite des Ziels 597 Ablauf einer Drag & Drop-Operation 598 Das Beispiel Ex24b: OLE-Drag & Drop 599 Die Klasse CEx24bDoc 599 Die Klasse CEx24bViezv 599 XIX

25 Einfiihrung in die ATL-Bibliothek 603 COM-Konzepte 603 Die zentrale Schnittstelle: IUnknown 605 COM-Code schreiben 606 COM-Klassen, die Mehrfachvererbung verwenden 607 Die COM-Infrastruktur 608 ActiveX, OLE und COM 609 ActiveX, MFC und COM 610 Uberblick iiber die ATL 610 AtlBase.H 610 AtlCom.H 611 AtlConv.cpp und AtlConv.h 611 AtlCtl.cpp und AtlCtl.h 611 AtllFace.idl und AtllFace.h 611 Atllmpl.cpp 611 AtlWin.cpp und AtlWin.h 611 StatReg.cpp und StatReg.h 612 Clientseitige ATL-Programmierung 612 C++-Vorlagen 612 Smart Pointer 613 Intelligente C++-Zeiger 615 Smart Pointer verwenden 616 Smart Pointer und COM 617 Die Smart Pointer der ATL 618 Die Klasse CComPtrBase 618 Die Klasse CComPtr 621 Die Klasse CComQIPtr 623 Nachteile der Smart-Pointer-Klassen 625 Serverseitige ATL-Programmierung 626 Die ATL und COM-Klassen 626 ATL-Projektoptionen 627 Entwicklung einer klassischen COM-Klasse 629 Apartments und Threadmodelle 630 Verbindungspunkte und ISupporiErrorlnfo 632 Der Freethreaded Marshaller 632 Implementierung der Klasse ^Spaceship mit klassischem ATL-Code 632 Die grundlegende ATL-Architektur 634 VTBL-Verwaltung...'. 635 Die ATL-Version von IUnknown: CComObjectRootEx 636 Die ATL und Querylnterface 638 Die Klasse CSpaceship erweitern 641 Methoden zu einer Schnittstelle hinzufiigen 643 Duale Schnittstellen 644 Die ATL und IDispatch 645 Die Schnittstellen IMotion und IVisual 646 Mehrere duale Schnittstellen 648 Programmieren mit Attributen 649 XX

26 ATL und ActiveX-Steuerelemente 653 Was sind ActiveX-Steuerelemente? 654 Steuerelemente mit der ATL entwickeln 655 Ein Steuerelement erstellen 655 Die Steuerelementarchitektur der ATL 659 Entwicklung eines Steuerelements 665 Ein attributiertes Steuerelement erstellen 692 Ereignisse im attributierten ATL-Code 694 27 Die OLE DB-Vorlagen 695 Warum OLE DB? 695 Grundlegende OLE DB-Architektur 697 Grundlegende Architektur der OLE DB-Vorlagen 697 Die Architektur der OLE DB-Consumervorlagen 698 Aufbau der OLE DB-Vorlagen fur Provider 700 Einen OLE DB-Consumer erstellen 705 Den Code des OLE DB-Consumers verwenden 709 Einen OLE DB-Provider erstellen 710 Den Providercode iiberarbeiten 715 Den Provider verbessern 717 OLE DB-Programmierung mit Attributen 718 Teil V Programmierung fiir das Internet 721 28 Internet-Grundlagen 723 Internet-Einfiihrung 724 Netzwerkprotokolle und das Schichtenmodell 724 IP 725 UDP ; 726 IP-Adressenformat 727 TCP 728 DNS 729 HTTP 731 FTP 733 Internet und Intranet 733 Ein eigenes Mini-Intranet einrichten 734 Das NT-Dateisystem und die Dateizuordnungstabelle (FAT) 734 Netzwerk-Hardware 734 Windows fiir den Netzwerkbetrieb konfigurieren 735 Hostnamen fiir ein Intranet: Die Datei hosts 736 Das Intranet testen: Ping 736 Ein Intranet mit einem Computer: Die TCP/IP-Adresse fur den Schleifenbetrieb 736 Winsock-Programmierung 736 Synchrone und asynchrone Winsock-Programmierung 736 Die Winsock-Klassen der MFC-Bibliothek 737 Die blockierenden Socketklassen 737 XXI

Die Hilfsklasse CSockAddr 737 Die Klasse CBlockingSocketException 739 Ein vereinfachtes HTTP-Serverprogramm 744 Ein einfaches HTTP-Clientprogramm 747 Einen Webserver mit CHttpBlockingSocket erstellen 748 Serverbeschrankungen im Beispiel Ex28a 748 Architektur des Ex28a-Servers 748 Die Win32-Funktion TransmitFile verwenden 749 Die Anwendung Ex28a erstellen und testen 750 Einen Webclient mit CHttpBlockingSocket erstellen 751 Der Winsock-Client Ex28a 751 Ex28a-Unterstiitzung fiir Proxyserver 751 Den Ex28a-Winsock-Client testen ' 752 Winlnet 752 Vorteile von Winlnet gegeniiber Winsock 752 Die Winlnet-Klassen der MFC 753 Riickruffunktionen fiir Internet-Sitzungen 754 Ein vereinfachtes Winlnet-Clientprogramm 756 Mit den MFC-Winlnet-Klassen einen Webclient entwickeln 757 Ex28a: Erster Winlnet-Client mit CHttpConnection 757 Den Winlnet-Client Nr. 1 testen 757 Ex28a: Zweiter Winlnet-Client mit OpenURL 757 Den Winlnet-Client Nr. 2 testen 758 Asynchrone Monikerdateien 759 Moniker 759 Die MFC-Klasse CAsyncMonikerFile 759 Die Klasse CAsyncMonikerFile in einem Programm verwenden 759 Asynchrone Monikerdateien im Vergleich mit Winlnet-Programmierung 760 29 Einfiihrung in Dynamic HTML 763 Das DHTML-Objektmodell 764 Visual C++.NET und DHTML 768 Das Beispiel Ex29a: MFC und DHTML 769 Das Beispiel Ex29b: DHTML und MFC 770 Das Beispiel Ex29c: ATL und DHTML 773 Weitere Informationen 776 30 ATL Server 777 IIS 777 Internetdienste-Manager 778 HS-Sicherheit 778 IlS-Verzeichnisse 780 IlS-Protokolle 781 Die IIS testen 782 ISAPI-Servererweiterungen 782 CGI und ISAPI 782 Eine einfache ISAPI-Servererweiterung 783 HTML-Formulare: GET und POST 783 XXII

Auftritt ATL Server 785 ATL und ATL Server 785 Wo passt ATL Server ins Bild? 786 Die Architektur von ATL Server 786 SRF-Dateien 788 Das Beispiel Ex30a: Eine ATL Server-Website 792 Teil VI.NET 795 31 Microsoft.NET 797 Komponententechnik 797 Zur Geschichte der Komponenten...." 797 Was stimmt mit den DLLs nicht? 798 COM 799 Die Vorteile von COM 800 Die Nachteile von COM 800 Die Common Language Runtime 801 Keine Grenzen 802 Es dreht sich alles um Typen 803 Typen der Common Language Runtime 804 Die Common Language Specification 808 Assemblys 808.NET und das Versionsproblem 811 Das (virtuelle) Leben in der Common Language Runtime 811 Threads und die Common Language Runtime 814 Anwendungsdomanen 814 Interoperabilitat 815 32 Managed C++ 817 Die Common Language Runtime ist Ihre Verbiindete 817 Warum C++ 818 Verwaltete C++-Erweiterungen 820 Visual C++.NET und die Managed Extensions 821 Das Beispiel Ex32a: Eine verwaltete C++-DLL 821 DaysOfTheWeek 826 AManagedValueStruct und AManagedGcStruct 826 IAManagedlnterface und IPerson 826 DotCOMVP, SoftwareDeveloper und Bum 826 AManagedDelegate 826 AManagedClass 827 So macht man die Assembly einsatzbereit 827 Das Beispiel Ex32b: Ein eigenstandiger verwalteter Client 828 Umstellung vorhandenen Codes auf verwaltetes C++ 830 XXIII

33 Windows Forms-Programmierung mit verwaltetem C++ 833 Windows Forms 833 Hinter der Fassade 834 Die Struktur von Windows Forms 834 Ein Windows Forms-Assistent 835 Die Form-Klasse 838 Ereignisse 839 Ausgaben auf dem Bildschirm 839 Was in Windows Forms noch fehlt 854 34 ASP.NET-Programmierung mit verwaltetem C++ 855 Das Internet als Entwicklungsplattform 855 Die Entwicklung von ASP.NET, 856 Die Rolle der IIS 858 Das Kompilierungsmodell von ASP.NET 858 Die Pflge-Klasse 859 Code-Behind 860 Web Forms 863 Und wo bleibt ActiveX? 868 Die HTTP-Pipeline 869 Das HttpContext-Otyekt 869 Das HttpApplication-Ob)ekt 870 Das HttpModule-Ob\ekt 870 Das HttpHandler-Objekt 872 Webdienste 875 Webdienste und verwaltetes C++ 876 WSDL und ASP.NET 877 Der Aufruf von Webmethoden 878 35 ADO.NET-Programmierung mit verwaltetem C++ 879 Verwaltete Datenanbieter 879 Verwaltete Anbieter in.net 880 Mit den Datenanbietem arbeiten 881 Aufnahme einer Verbindung zur Datenbank 881 Datenbankabfrage 883 Gespeicherte Prozeduren 884 Einlesen der Daten mit Datenlesern 885 Der Umgang mit Fehlern 886 ADO.NET-Datasets 886 Datasets und Datenadapter 887 Erstellung von Datasets im Speicher 888 Umwandlung von Datasets in XML 890 XXIV

Anhange A Meldungshandler der MFC-Bibliothek 893 B MFC-Klassenidentifikation und dynamische Objekterstellung 899 Den Namen der Objektklasse zur Laufzeit ermitteln 899 Die MFC-Struktur CRuntimeClass und das Makro RUNTIMEJOLASS 900 Dynamische Erstellung 901 Ein Beispielprogramm 902 Stichwortverzeichnis 905 DerAutor 924 XXV