Table Of ContentFrank Eckgold
Windows 95
Anwendungs. und
Systemprogrammlerung
Professional Computing
QM-Handbuch der Softwareentwicldung
Muster und leitfaden nach DIN SIO 900 1
von Dieter Burgortz
QualitOlsoptimierung der Software-Entwicldung
Dos Capability Moturity ModelICMM)
von Georg Erwin Thaller
Management von DV-Prajekten
Proxiswissen zur erfolgreichen Projektorganisation
im miHelstondischen Unternehmen
von Wolfram Brummer
Die Feinplanung von DV-Syslemen
Ein Handbuch fur detailgerechtes Arbeiten in DV-Projekten
von Georg liebetrau
EHizienle Dalenbankentwicklung mit INFORMIX-4Gl
von Reinhard Lebensorger
EHizienler DB-Einsalz: von Adabas ::
von Dieter W _S torr :. .
Windows 95
Anwendungs- und Systemprogrammierung
von Frank Eckgold
C/C++ Werbeugkaslen
von Arno Damberger
Syslemnahe Pragrammierung mit Borland Pascal
von Christian Baumgarten
SQl
Eine praxisorientierte Einfiihrung
von Jiirgen Marsch und J6rg Fritze
CICS
Eine proxisorientierfe EinfUhrung
von Thomos Kregeloh und Stefan Schonleber
Frank Eckgold
Windows 95
Anwendungs- und
Syslemprogrammierung
Von den Grundlagen bis hin zur
Programmierung komplexer APls
I I
Vleweg
Das in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder
Garantie irgendeiner Art verbunden. Der Autor und der Verlag iibernehmen
infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige
Haftung iibernehmen, die auf irgendeine Art aus der Benutzung dieses Programm
Materials oder Teilen davon entsteht.
Alle Rechte vorbehalten
© Springer Fachmedien Wiesbaden 1996
Ursprünglich erschienen bei Friedr. Vieweg & Sohn Verlagsgesellschaft mbH,
Braunschweig/Wiesbaden, 1996
Softcover reprint of the hardcover 1st edition 1996
Additional material to this book can be downloaded from http://extras.springer.com
Der Verlag Vieweg ist ein Unternehmen der Bertelsmann Fachinformation GmbH.
Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich
geschiitzt. Jede Verwertung auBerhalb der engen Grenzen des
Urheberrechtsgesetzes ist ohne Zustimmung des Verlags un
zulassig und strafbar. Das gilt insbesondere fiir Vervielfalti
gungen, Ubersetzungen, Mikroverfilmungen und die Einspei
cherung und Verarbeitung in elektronischen Systemen.
Gedruckt auf saurefreiem Papier
ISBN 978-3-322-88951-5 ISBN 978-3-322-88950-8 (eBook)
DOI 10.1007/978-3-322-88950-8
Vorwort
Mit WINDOWS 95 findet erstmalig ein Betriebssystem weite
Verbreitung, das nicht nur den Bereich der Personal Computer,
sondem dariiber hinaus auch andere wichtige Prozessorplatt
formen mit einer Vielzahl von Leistungsmerkmalen versorgt,
die einerseits dem Systembenutzer einen hohen Grad an
Oberflachen- und Funktionalitatsnormierung bieten, anderer
seits dem Entwickler den weitgehend prozessorunabhangigen
Zugriff auf Systemressourcen und weitergehende Program
mierschnittstellen verfOgbar macht.
FOr den absehbaren Markterfolg von WINDOWS 95 dOrften
zwei Griinde ausschlaggebend sein. Zum einen ist hier
sicherlich die technisch gelungene Konstruktion des Betriebs
systems zu nennen, die neben einer konsistenten 32-Bit
Architektur vor allem mit dem Grundkonzept der virtu ellen
Maschine die prinzipiell leichte Portierbarkeit des Betriebs
systems selbst - und damit auch der auf dieser Basis
professionell entwickelten Software - auf andere Prozessoren
ermoglicht. Dies aber, verbunden mit der fOr zukOnftige
Erweiterungen offenen Programmierschnittstelle, ist der ent
scheidende Faktor fOr die Zukunftssicherheit nicht nur des
Betriebssystems, sondem damit verbunden auch die der mit
groBem Entwicklungsaufwand - und Kosten - erstellten
Anwendungen.
Der zweite Grund muB aber in der jetzt schon Oberraschend
urnfangreichen und qualitativ hochwertigen Ausstattung von
WINDOWS 95 mit zusatzlichen Anwendungsprogrammier
schnittstellen (API) gesehen werden. Diese APIs decken
wesentliche Bereiche der Anwendungsprogrammierung ab;
beginnend mit Grafik-, Multimedia-, Game- und Rendering
schnittstellen Ober die Untersrutzung unterschiedlicher Netz
werkprotokolle bis hin zur Programmierung verteilter Pro-
v
Vorwort
zesse werden umfangreiche Programrnierschnittstellen
angeboten, die - und das ist in Hinblick auf die potentiellen
Portierungskosten bestehender professioneller Software
wesentlich - in einigen Bereichen die de facto-Standards
unterstiitzen; hier soIl beispielhaft die Bereitstellung des
OpenGL-Standards im Bereieh der 3D-Grafik und des
Rendering genannt werden.
Zusammenfassend muB erwartet werden, daB WINDOWS 95
die Entwieklungsplattform der nachsten Jahre sein wird, die
geeignet ist, nieht nur die Kosten professioneller Software
entwieklung in der Erstellungsphase niedrig zu halten, son
dern dariiber hinaus auch investitionssiehernd den Software
pflegeaufwand - z. B. bei der Portierung auf zukiinftige, lei
stungsstarkere Hardware - zu minimieren.
Gerade professionelle Softwareentwiekler, nieht nur diejeni
gen der kommerziellen Softwareproduktion, sondern vor al
lem auch Anwendungs- und Systemprogrammierer in den
Entwieklungsbereiehen der Industrie, haben hier die Mog
lichkeit, mit vertretbarem Aufwand problembezogene An
wendungen zu entwickeln, die hohen Anforderungen an die
Betriebssieherheit ebenso geniigen, wie sie eine niedrige an
wenderseitige Akzeptanzschwelle aufgrund ihrer grafischen
Oberflache haben.
Das vorliegende Buch wendet sieh an Anwendungs- und
Systementwiekler, die klar strukturierte Informationen sowohl
beziiglich der Grundlagen der Programrnierung eines nach
riehten- und objektbasierten Betriebssystems als auch wiehti
ger APIs suchen.
Inhaltsverzeichnis
1 Einleitung ............................................................................................ 1
1.1 Inhalt .......................................................................................... 1
1.2 Voraussetzungen ........................................................................ 2
1.3 Aufbau ....................................................................................... 2
2 Systemautbau ..................................................................................... 3
2.1 WINDows-Plattformen ................................................................ 3
2.2 Struktur des Betriebssystems ..................................................... 4
2.3 API-Struktur ............................................................................... 8
2.4 ProzeB und Thread .................................................................. 24
2.5 SpeichelVerwaitung ................................................................. 35
2.6 Fenster ...................................................................................... 41
2.7 MDI .......................................................................................... 50
3 Programmierung ............................................................................. 53
3.1 Programmerstellung ................................................................. 53
3.2 Projektaufbau bei C++ ............................................................. 56
3.3 Registratur (registry) ................................................................ 64
3.4 Bildschirmschoner (screen saver) ........................................... 68
3.5 64-Bit Integeroperationen ....................................................... 71
3.6 DLL (dynamic link library) ...................................................... 72
3.7 Strukturierte Ausnahmebehandlung (SEH) ............................. 80
3.8 Fehlerbehandlung .................................................................... 86
4 Dateien .............................................................................................. 89
4.1 Dateisysteme ............................................................................ 89
4.2 Handhabung von Dateien ....................................................... 92
4.3 Konventionen fUr Dateinamen ................................................ 93
4.4 Dateioperationen ..................................................................... 94
4.5 Verzeichnisse ......................................................................... 103
4.6 Gerate (Laufwerke) ................................................................ 104
4.7 Ein-/A usgabefunktionen ........................................................ 104
4.8 Dateikomprimierung ............................................................. 110
VII
Inhaltsverzeichnis
4.9 Speicherdateien (file mapping) ............................................. 112
5 Zeitmesser (Timer) ........................................................................ 115
5.1 Dbersicht ................................................................................ 115
5.2 Einrichten und L6schen ......................................................... 115
6 Meniis .............................................................................................. 117
6.1 Mentitypen............................................................................. 117
6.2 Identifikation von Mentipunkten .......................................... 119
6.3 Modifikation ........................................................................... 120
7 Hilfeprojekte.................................................................................. 127
7.1 Einbinden in ein Programm .................................................. 128
7.2 Hilfeprojekt und Hilfeinhalte ................................................ 130
7.3 Syntax in Kapiteldateien (topic files) (RTF) ......................... 132
7.4 Syntax in Projektdateien (project files) (HPJ) ....................... 133
7.5 Erstellen einer Programmhilfe ............................................... 137
8 Kontrollelemente.......................................................................... 145
8.1 Einleitung ............................................................................... 145
8.2 Dialoge ................................................................................... 145
8.3 Nachrichten ............................................................................ 153
8.4 Standarddialoge ..................................................................... 155
8.5 Einfache Kontrollelemente .................................................... 172
8.6 Erweiterte Kontrollelemente (common controls) ................. 232
9 Eingabe ............................................................................................ 317
9.1 Schreibmarken (Carets) .......... ................................. . . .... . ..... .. 317
9.2 Mauszeiger (Cursor) .............................................................. 321
9.3 Mauseingaben ........................................................................ 328
9.4 Tastatureingaben ................................................................... 331
9.5 Tastaturktirzel ........................................................................ 338
10 Standardgrafikausgabe (GDI) ...................................................... 343
10.1 Prinzip .................................................................................... 343
10.2 Die WM_PAINT Nachricht ..................................................... 345
10.3 Koordinatensysteme und Transformationen ......................... 351
10.4 Geratekontext ........................................................................ 360
10.5 Grafikausschnitte (Clipping) .................................................. 369
10.6 Stifte und Pinsel ..................................................................... 371
10.7 Linien- und Kurvenobjekte ................................................... 374
10.8 Bitmaps .................................................................................. 381
VIII
Inhaltsverzeichnis
10.9 Farben .................................................................................... 394
10.10 Farbpaletten ........................................................................... 396
10.11 Gerateunabhangige Farbwiedergabe OCM) ......................... 404
10.12 Zeichensatze .......................................................................... 407
10.13 Textausgabe ........................................................................... 409
10.14 Druckerausgabe ..................................................................... 413
10.15 Metadateien ............................................................................ 417
11 OpenGL ........................................................................................... 421
11.1 Grundlagen ............................................................................ 422
11.2 Struktur der Schnittstelle ....................................................... 424
11.3 Grafikobjekte ......................................................................... 427
11.4 Reflexionsverhalten ............................................................... 430
11.5 Gekrummte Oberflachen ....................................................... 432
11.6 Transformationen ................................................................... 435
11.7 Beleuchtung und Farbe ......................................................... 436
11.8 Ausschneiden (clipping) ....................................................... 438
11.9 Fragmentbildung .................................................................... 439
11.10 Spline-Generierung ................................................................ 443
11.11 Kommandolisten .................................................................... 443
11.12 Informationsfunktionen ......................................................... 444
11.13 Anbindung an WIN32 ............................................................ 446
11.14 Renderkontext (rendering context) ....................................... 447
11.15 Pixelformate ........................................................................... 447
11.16 Farbpaletten ........................................................................... 450
11.17 Fragmentendarstellung .......................................................... 451
12 Spieleschnittstelle und schnelle Graflkausgabe ....................... 453
12.1 WinG ...................................................................................... 454
12.2 GameSDK ............................................................................... 460
13 Multilnedia ...................................................................................... 475
13.1 Geratevoraussetzungen ......................................................... 476
13.2 Datenformate ......................................................................... 477
13.3 Stufe l-Zugriff (MCIWnd Window User Interface) ............... 481
13.4 Stufe 2-Zugriff (Media Control Interface MCI) ...................... 487
13.5 Schnittstellen der Stufe 3 ....................................................... 492
13.6 Zugriff auf MIDI-Gerate ......................................................... 520
13.7 Multimediazeitmessung (timer) ............................................. 527
13.8 Joystick ................................................................................... 528
IX
Description:Dr. Frank Eckgold ist Autor mehrerer erfolgreicher Fachbücher zum Thema Anwendungs- und Systemprogrammierung (OS/2, Virtual Reality, Windows95). Er ist selbst Softwareentwickler und lehrt im Bereich Informatik, insbesondere praktische Informatik/ Programmierung.