Das Visual C++ 1.5 Buch
Micha Fritz
Rainer Aumiller
DÜSSELDORF • SAN FRANCISCO • PARIS • SOEST (NL)
Inhaltsverzeichnis
Vorwort
Zu diesem Buch Für wen ist dieses Buch? Gliederung des Buches
Kapitel 1: Überblick über das Visual C++-Konzept
Die Visual Workbench Der Editor Der AppWizard Das AppStudio Der ClassWizard Die Klassenbibliothek MFC 2.5 Der Compiler Der Windows-Debugger Der ClassBrowser Graphischer Überblick Der Begriff Application Frameworks
XIII
XIII XIV XIV
3 4 4 5 5 6 7 7 8 8 9
Kapitel 2: Die Programmoberfläche
Die Symbolleiste oder Toolbar Die Statuszeile Der Menü-Überblick Der Editor Die Menüs und ihre Menüpunkte
Das Menü FILE
Das Menü EDIT
Das Menü VIEW
Das Menü PROJECT
Das Menü BROWSE
Das Menü DEBUG
Das Menü TOOLS
Das Menü OPTIONS
Das Menü WINDOW
Das Menü HELP
13
16 17 18 19 20 20 23 26 28 34 40 44 45 55 57
Kapitel 3: Das visuelle Werkzeug AppStudio
Das Hauptfenster Der Ressourcen-Browser
59
61 61
VI Das Visual C+ + 7.5 Buch
Die von AppStudio unterstützten Ressourcen Accelerator-Table Bitmaps
Rasteranzeige Symboländerung Zuordnung eines Symbols
Dialogboxen erstellen Menüs editieren String-Table
63 63 65 66 67 68 69 69 69
Kapitel 4: QuickWin-Programme Übersicht Beispielprogramm
Quelltext Die einzelnen Schritte zum QuickWin-Programm
Projektverzeichnis erstellen Quelltexte in das erstellte Verzeichnis kopieren Neues Projekt erstellen Projekt kompilieren Programm ausführen
71 73 74 74 78 78 79 79 81 82
Kapitel 5: Debuggen von Programmen Ein Beispiel Korrektur der Kompilierungsfehler Programmtest (der erste) Debuggen (schrittweise) Variablenwerte anzeigen Programmtest (der zweite) Haltepunkte setzen Lokale Variablen anzeigen lassen Programmtest (der dritte) Ausführung bis zum Cursor
83
85 87 89 91 91 92 92 93 94 94
Kapitel 6: „Dlrow" - ein Windows-Programm 97 Erstellung des Programmskeletts 99
Die Main-Frame-Fenster-Klasse 101 Die Dokument-Fenster-Klasse 103
Einfügen einer Elementvariablen in die View-Klasse 104 Einfügen einer Nachrichten-Elementfunktion in die View-Klasse 105
Die Message-Map 105 Die Nachrichten-Elementfunktion editieren 107 CString initialisieren 108
Inhaltsverzeichnis VII
Die virtuelle Elementfunktion OnDraw der View-Klasse editieren Die Klasse CDC
Das Programm kompilieren DLROW.H DLROW.CPP DLROWDOC.H DLROWDOC.CPP DLROWVW.H DLROW.CPP
Kapitel 7: Windows-Grundlagenforschungen
Der erste Überblick Programmgerüst erstellen Menüeintrag erstellen Menüeintrag mit einer Nachrichten-Elementfunktion verbinden Eine Dialogbox erstellen Eine Dialog-Klasse ableiten Die Dialogbox-Elemente mit einer Nachrichten-Elementfunktion versehen Elementvariablen definieren Nachrichten-Elementfunktionen schreiben Änderungen vornehmen
Programmfunktionalität Programmierschritte Programmgerüst erstellen Die Dialogoberfläche Set Tab Order Variablendeklaration Funktionsrümpfe erstellen Quelltext editieren
Kapitel 8: Die Microsoft Foundation-Klassen und ihre Anwendung
Zum Aufbau Das SmartCopy/Delete-Projekt Ein Programmgerüst mit dem AppWizard erstellen
Zuerst kam der AppWizard Zum generellen Aufbau eines MFC-Programms
Das CWinApp-Objekt Design der Benutzerschnittstelle mit VBX-Steuerelementen
VBX-Steuerelemente installieren Dialogbox für CFormView entwerfen Die Menüleiste entwerfen
108 108 110 111 112 115 116 118 119
123
125 126 128
131 132 137
138 140 144 145 149 149 150 151 154 154 155 156
175
177 178 179 179 180 181 186 187 188 191
VIII Das Visual C+ + 1.5 Buch
Die Toolbar anpassen 192 Der IDR_MAINFRAME-String und weitere Anpassungen 194
3D-Dialogboxen und -Steuerelemente in Verbindung mit MFC 196 Elementvariablen für die CFormView-Dialogbox einführen 199
Dialog-Datenaustausch - DDX 199 Elementvariablen für den Dialog-Datenaustausch festlegen 199 Weiterer Nutzen des Dialog-Datenaustauschs 201 Die Realisation des Skripts 204 Dynamische Objekt-Arrays mit CObArray 208
Auswerten von VBX-Aktionen 208 Serialisierung - oder wie kommen meine Daten in eine Datei? 214
Serialisierung und Objekt-Persistenz oder die Hartnäckigkeit eines Objekts zu verschwinden 214
Wie kommen die Daten auf den Bildschirm? 218 Bedienungselemente einführen 219 Eine eigene Klasse für eine Dateiauswahlbox erzeugen 222
Dialogboxverhalten vervollständigen 228 Standard-VBX-Ereignisse 231
Das Ausführen von Arbeiten im »Hintergrund,, 239 Eine neue CString-Klasse ableiten 241 Die Hintergrundverarbeitung anstoßen - einen Timer einrichten 243
Weiter mit OnldleO 245 Die MFC-Klassenbibliothek und die Dateien 253
Eine Datei zum Schreiben oder Lesen öffnen und schließen 254 Daten in eine Datei schreiben oder aus ihr lesen 255 Informationen über eine Datei einholen 256
Verzeichnisse durchsuchen 257 Texte in der Statuszeile ausgeben 260 Die Verknüpfung der Klassen untereinander 263 Menükommandos - oder welche Klasse soll das Kommando verarbeiten? 264
Zugriff von der Dokument-Klasse auf die View-Klasse herstellen 264 Message-Map-Funktionen für die Menüpunkte erstellen 265
Die Verwaltung einer INI-Datei 269 Weitere Verschönerungen 278
Anzeige der Uhrzeit in der Statuszeile 278 Rahmenfenstergröße am Inhalt ausrichten 280 Dateityp registrieren lassen 281
Sonstiges zu SmartCopy 282 Bekannte Probleme 282 Vorschläge für eigene Erweiterungen 282 Praktischer Einsatz 283
Inhaltsverzeichnis IX
Kapitel 9: Fortgeschrittene und NT-Programmierung 285 Anwenderdefinierte VBX-Steuerelemente 287
Erstellen eines eigenen VBX-Steuerelementes 288 Grundlagen der VBX-Steuerelemente 289 Visual C++ und Visual Basic 290 Das Programmskelett 290 Erstellen einer Projektdatei für VBX-Steuerelemente 299 Das Pushbutton-VBX-Steuerelement 300
Portierung von Visual C++-16-Bit-Applikationen nach Visual C++-32-Bit-Applikationen 316
Die Portierung von SmartCopy 317 Wie schreibe ich übertragbare Programme? 318
Anwenderdefinierte (VBX-) Steuerelemente - Realisation als DLL für Windows NT 319
Was machen NT-Programmierer ohne VBX-Elemente? 319 Erstellen einer DLL mit einem anwenderdefinierten Steuerelement 320 Simulation einer VBX-Umgebung in Visual C++ für NT 336
ADRESSEN - Ein praktisches ODBC-Beispiel 346 ODBC - Ein Überblick 346 Die Definition der Tabellenstruktur 347 Erzeugen eines Programmskeletts für den Datenbankzugriff 352 Formulare für Datensätze anlegen 354 Datensätze hinzufügen, löschen und editieren 358 Datensätze hinzufügen 359 Datensätze löschen 365 3D-Steuerelemente einführen 366 Die Anzeige der zugehörigen Termine 366 Einen Recordset parametrisieren 367 Daten eines zweiten Recordsets im Formular anzeigen 371 Zwei Recordsets synchronisieren 372 Termine in die Tabelle einlesen 373 Datensätze im Termin-Recordset ändern, hinzufügen und löschen 375 Reaktion auf die Änderung der aktuellen Tabellenzeile 380 Termine an den Terminplaner Schedule+ übermitteln 381 Verbesserungsvorschläge 384
OLE 2.0 384 OLE 2.0-Überblick 385 Der OLE-Server CHARTe 385 Ein CHART-Objekt in eine OLE-Anwendung einfügen 393 Der OLE-Client BILDER 393
Das Visual C+ + 1.5 Buch
Referenz 397
Klassenübersicht 399 Die Klasse CWINAPP 399 Die Klasse CDOCUMENT 402 Die Klasse CVIEW 403 Die Klasse CFRAMEWND 403 Die Klasse CDOCTEMPLATE und ihre Abkömmlinge CSINGLEDOCTEMPLATE und CMULTIDOCTEMPLATE 404 Die Klasse CWND 405 Die Klasse COBJECT 406 Die Klasse COBARRAY 406 Die Klasse CARCHIVE 407 Die Klasse CLISTBOX 408 Die Klasse CFILEDIALOG 409 Die Klasse CSTRING 410 Die Klasse CVBCONTROL 411 Die Klasse CFILE 412 Die Klasse CSTATUSBAR 413 Die Klasse CCMDUI 414
Gesucht - gefunden (gängige Probleme und ihre Lösung) 414 INI-Datei verwalten 415 Die Dateiauswahlbox anpassen 415 Persistente Objekte - oder wie kommen meine Dokument-Daten in eine Datei 417 Die Toolbar manipulieren 417 Der Umgang mit der VBX-Picture-Eigenschaft 417 Überschreiben von Elementfunktionen 421 Programmieren und Testen mit Visual Basic 421
Die Toolbar mit TOOLEDIT bearbeiten 422 Eine Beschreibung der CTL3D-Bibliothek 424
Überblick - der 3D-Look 424 Wie CTL3D den Steuerelementen den 3D-Effekt verleiht 425 Voraussetzungen und wichtige Tatsachen 425 CTL3D und die MFC-Klassenbibliothek 426 Die verschiedenen Versionen von CTL3D 427 CTL3D.DLL - das Original 427 CTL3D-Nachrichten 429 Funktionsreferenz 430
Chicago und Cairo 433 Chicago - Windows 95 433 Cairo - das neue Windows NT 434 Fazit 434
Inhaltsverzeichnis XI
Anhang A: Zur beiliegenden Diskette Installation der beiliegenden Diskette
Das Programm TOOLEDIT installieren Die Beispielprogramme installieren Die Bibliothek CTL3D installieren
435 437 437 438 438
Anhang B: ASCII-Tabelle
Stichwortverzeichnis
439
445