Frank 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: