lehrerbibliothek.deDatenschutzerklärung
Windows-Programmierung mit C# Windows-Programmierung auf der .NET-Plattform
Windows-Programmierung mit C#
Windows-Programmierung auf der .NET-Plattform




Charles Petzold

Microsoft Press
EAN: 9783860636527 (ISBN: 3-86063-652-9)
1152 Seiten, paperback, 20 x 24cm, 2002, mit CD-ROM

EUR 69,00
alle Angaben ohne Gewähr

Umschlagtext
• Das grundlegende Buch zur Windows-Programmierung mit dem .NET Framework

• Windows Forms im Detail von einem der bekanntesten Fachautoren



„Schlag doch mal im Petzold nach" war lange Zeit die klassische Antwort auf Fragen zur Windows -

Programmierung. Mit dieser komplett neuen Auflage seines Klassikers Windows-Programmierung tritt

Charles Petzold den Beweis an, dass diese Antwort auch im Zeitalter von .NET und Windows Forms

gültig ist. Womit auch der Inhalt dieses Buches im Wesentlichen beschrieben ist - eben die Grundlagen der Programmierung von Windows-Anwendungen mit Windows Forms, von den wichtigsten Datentypen über Tastatureingaben, Zeichenfunktionen bis hin zur Drag-and-Drop-Funktionalität. Illustriert

anhand einer Vielzahl von Beispielen, zusammen mit vielen Hinweisen zur besten Implementierungspraxis, wird hier das grundsätzliche Wissen zur Windows-Programmierung mit dem .NET Framework dargelegt. Wieder ein Petzold, auf den kein Windows-Programmierer verzichten sollte!



Auf Begleit-CD:

Alle Beispielanwendungen aus dem Buch



Lesen Sie:

• Wichtige Strukturen

• Ein Textausgabekurs

• Linien, Kurven und Bereichsfüllungen

• Seiten und Transformationen

• Text und Schriften, Bilder und Bitmaps

• Bezier- und andere Spline-Kurven

• Pfade, Bereiche und Clipping

• Pinsel und Stifte

• Schriftspielereien und Drucken

• Metadateien

• Maus und Tastatur

• Der Zeitgeber und die Zeit

• Schaltflächen, Label und Laufleisten

• Menüs und Dialogfelder

• Edit, List und Spin

• Symbol- und Statusleisten

• Struktur- und Listenansicht

• Ausschneiden, Ziehen und Ablegen

• Dateien und Streams

• Die Klasse Math



Der Autor:

Charles Petzold beschäftigt sich bereits seit der Beta-Version von Windows 1.0 mit der Windows-

Programmierung. Von ihm stammt der allererste Artikel zum diesem Thema: A Step-by-Step Guide to

Buildingyourfirst Windows Application, veröffentlicht Dezember 1986 im Microsoft Systems Journal.

1987 publizierte Petzold Windows-Programmierung, das bis heute in seinen verschiedenen Auflagen

eines der bestverkauften Programmierbücher ist.
Inhaltsverzeichnis
Gesamtüberblick

Die Grundlagen
1 Am Anfang war die Konsole 1
2 Hello, Windows Forms 43
3 Wichtige Strukturen 79
4 Ein Textausgabekurs 115

Grafik
5 Linien, Kurven und Bereichsfüllungen 145
7 Seiten und Transformationen 219
9 Text und Schriften 309
11 Bilder und Bitmaps 411
13 Bezier-und andere Spline-Kurven . 533
15 Pfade, Bereiche und Clipping 597
17 Pinsel und Stifte 679
19 Schriftspielereien 793
21 Drucken 869
23 Metadateien 957

Benutzerschnittstelle
6 Die Tastatur 181
8 Die Zähmung der Maus 259
10 Der Zeitgeber und die Zeit 373
12 Schaltflächen, Label und Laufleisten 469
14 Menüs 559
16 Dialogfelder 631
18 Edit, List und Spin 729
20 Symbol- und Statusleisten 831
22 Struktur- und Listenansicht 909
24 Ausschneiden, Ziehen und Ablegen 991

Anhänge
A Dateien und Streams 1031
B Die Klasse Math 1063
C Stringtheorie 1077

.NET Framework-Themen

.NET Framework-Element Kapitel

System-Namespace 7

Console-Klasse l
DateTime-Kiasse 10
Math-Klasse B
String-Klasse C
TimeSpan-Klasse 10
System.IO-Namespace A
System.Drawing-Namespace
Bitmap-Klasse 11
Brush-Klasse 17
Brushes-Klasse 3
Color-Struktur 3
Font-Klasse 9
FontFamily-Klasse 9
Graphics-Klasse 2, u.a.
Image-Klasse 11
Pen-Klasse 17
Pens-Klasse 3
Point-Struktur 3
PointF-Struktur 3
Rectangle-Struktur 3
RectangleF-Struktur 3
Region-Kiasse 15
Size-Struktur 3
SizeF-Struktur 3
SolidBrush-Klasse 17
StringFormat-Klasse 9
SystemBrushes-Klasse 3
SystemColors-Klasse 3
SystemPens-Klasse 3
TextureBrush-Klasse 17

System.Drawing.Drawing2D-Namespace
GraphicsPath-Klasse 15
HatchBrush-Klasse 17
LinearGradientBrush-Klasse 17
Matrix-Klasse 7
PathGradientBrush-Klasse 17

System.Drawing.Imaging-Namespace
Metafile-Klasse 23

System.Drawing.Printing-Namespace 21

System.Text-Namespace A

System.Windows.Forms-Namespace

Button-Klasse 12
CheckBox-Klasse 12
Clipboard-Klasse 24
ColorDialog-Klasse 16
ComboBox-Klasse 18
ContextMenu-Klasse 14
DataObject-Klasse 24
FontDialog-Klasse 16
Form-Klasse 2, u.a.
GroupBox-Klasse 12
HScrollBar-Kiasse 12
Label-Klasse 12
ListBox-Klasse 18
ListView-Klasse 22
MainMenu-Klasse 14
Menultem-Klasse 14
NumericUpDown-Klasse 18
OpenFileDialog-Klasse 16
PageSetupDialog-Klasse 21
PrintDialog- Klasse 21
RadioButton-Klasse 12
SaveFileDialog-Klasse 16
Splitter-Klasse 22
StatusBar-Klasse 20
TextBox-Klasse 18
Timer-Klasse 10
ToolBar-Klasse 20
ToolTip-Klasse 18
TrackBar-Klasse 12
TreeView-Klasse 22
VScrollbar-Klasse 12

Inhaltsverzeichnis

Einleitung XVII

Die Windows-Programmierung: ein Überblick XVII
Benutzervoraussetzungen XIX
Systemvoraussetzungen XX
Aufbau dieses Buchs XX
Die Begleit-CD XXI
Support XXI
Danksagung XXII

1 Am Anfang war die Konsole 1
Die C#-Version 2
Die Anatomie eines Programms 5
C#-Namespaces 6
Konsolenein-/-ausgabe 7
C#-Datentypen 9
Ausdrücke und Operatoren 13
Bedingungen und Wiederholungen 15
Der große Schritt zu den Objekten 19
Die Programmierung in C# 23
Statische Methoden 24
Ausnahmebehandlung 25
Ausnahmen auslösen 27
Eigenschaften abfragen und einstellen 29
Konstruktoren 32
Instanzen und Vererbung 35
Der große Überblick 38
Namenskonventionen 40
Über die Konsole hinaus 41

1 Hello, Windows Forms 43
Das Meldungsfeld 46
Das Formular 50
Anzeigen des Formulars 52
Anwendungen müssen laufen 54
Variationen über ein Thema 56
Formulareigenschaften 57
Ereignisgesteuerte Eingabe 59
Die Behandlung von Pamt-Ereignissen 61
Textanzeige 63
Das Paint-Ereignis ist etwas Besonderes! 67
Mehrere Formulare, mehrere Handler 68
Formularvererbung 70
Die OnPaint-Methode 72
Gehört Main hierher? 74
Ereignisse und On-Methoden 75

3 Wichtige Strukturen 79
Klassen und Strukturen 80
Zweidimensionale Koordinatenpunkte 81
Arrays aus Punkten 83
Die Size-Struktur 84
Die Gleitkommaversionen 85
Das Rechteck als Punkt und Größenangabe 87
Eigenschaften und Methoden von Rectangle 88
Ein Formular in der passenden Größe 90
Das Formular und der Client 92
Punkte konvertieren 95
Die Struktur Color 97
Die Namen der Farben 97
Stifte und Pinsel 99
Systemfarben 100
Gültige Farben 103
Welcher Textpinsel sollte verwendet werden? 104
Neuzeichnen 104
Zentrieren der Zeichenfolge »Hello World« 107
Abmessungen der Zeichenfolge 110
Text in einem Rechteck 112

4 Ein Textausgabekurs 115
Systeminformationen 116
Abstände zwischen Textzeilen 116
Eigenschaftenwerte 117
Formatierung in Spalten 119
Alles ist ein Objekt 121
Auflisten der Systeminformationen 125
Windows Forms und Bildlaufleisten 127
Bildlauf durch ein Flächensteuerelement 128
Das Vermächtnis von ScrollableControl 132
Bildlauf ohne Steuerelemente 133
Konkrete Zahlen 135
Immer aktuell bleiben 136
Lassen Sie sich nicht zur Schnecke machen 139
Ein Blick in die Zukunft 140

5 Linien, Kurven und Bereichsfüllungen 145
Abruf eines Graphics-Objekts 146
Zeichenstifte, kurz zusammengefasst 147
Geraden 148
Einführung in das Drucken 150
Eigenschaften und Status 155
Anti-Aliasing (Kantenglättung) 156
Mehrere verbundene Linien 158
Kurven und parametrische Gleichungen 162
Das allgegenwärtige Rechteck 165
Allgemeine Polygone 167
Einfache Ellipsen 168
Bögen und Tortendiagramme 169
Rechtecke, Ellipsen und Tortendiagramme füllen 175
1-Pixel-Fehler 176
Polygone und der Füllmodus 177

6 Die Tastatur 181
Tastatureingaben ignorieren 182
Wer übernimmt den Fokus? 182
Tasten und Zeichen 184
Tasten drücken und loslassen 185
Die Enumeration Keys 186
Testen auf Zusatztasten 194
Realitätscheck 195
Eine Tastaturschnittstelle für Syslnfo 195
KeyPress für Zeichen 197
Steuerzeichen 198
Die Tasten genauer untersuchen 198
Aufruf der Win32-API 203
Andere Länder, andere Tastaturen 205
Der Eingabefokus 207
Die fehlende Einfügemarke 208
Eingegebene Zeichen anzeigen 213
Probleme mit der Schreibrichtung 216

7 Seiten und Transformationen 219
Geräteunabhängigkeit durch Text 220
Und wie viel macht das dann? 220
Punkte pro Zoll (dpi) 223
Und was ist mit dem Drucker? 224
Manuelle Konvertierung 225
Seiteneinheiten und Seitenskalierung 227
Zeichenstiftbreiten 231
Seitentransformationen 234
Speichern des Grafikstatus 235
Metrische Maße 236
Frei wählbare Koordinaten 239
Was nicht funktioniert 242
Hello, World Transform 242
Ein Überblick 247
Lineare Transformationen 248
Matrizen 250
Die Klasse Matrix 251
Scherungen 253
Transformationen kombinieren 256

8 Die Zähmung der Maus 259
Die dunkle Seite der Maus 260
Die Maus ignorieren 261
Kurze Erläuterung der Begriffe 262
Informationen über die Maus 262
Das Mausrad 263
Die vier grundlegenden Mausereignisse 264
Rädchen drehen 266
Mausbewegungen 270
Die Maus verfolgen und einfangen 272
Abenteuerliche Mausverfolgung 274
Wiederverwendbarkeit durch Schnittstellen 281
Klicks und Doppelklicks 284
Eine Maus mit Eigenschaften 285
Enter, Leave und Hover 286
Der Mauscursor 287
Trefferprüfung 294
Die Tastaturschnittstelle 297
Trefferprüfung in untergeordneten Elementen 298
Trefferprüfung bei Text 303
Kritzeln mit der Maus 304

9 Text und Schriften 309
Schriften unter Windows 310
Ein bisschen Terminologie 311
Schrifthöhen und Zeilenabstand 313
Standardschriften 314
Schriftenvariationen 315
Schrifterstellung mit dem Namen 317
Was uns Punkt heißt, wie es auch hieße 322
Einheiten im Konflikt 326
Eigenschaften und Methoden der Klasse Font 328
Neue Schriften einer FontFamily 333
Grundwissen zu den Designmaßen 335
Arrays mit Schriftfamilien 339
Schriftauflistungen 344
DrawString-Variationen 345
Anti-Aliasing bei der Textanzeige 347
Die Abmessungen einer Zeichenfolge 349
Die StringFormat-Oplionen 350
Raster- und Textanpassung 351
Horizontale und vertikale Ausrichtung 354
Die Anzeige von Zugriffstasten (Hotkeys) 358
Abschneiden und zurechtstutzen 359
Tabstopps 366

10 Der Zeitgeber und die Zeit 373
Die Klasse Timer 374
Die Struktur DateTime 377
Ortszeit und Weltzeit 379
Tick, tick, tick 382
Internationale Kalender 384
Eine lesbare Darstellung 386
Eine einfache, kulturspezifische Uhr 391
Der Retro-Look 395
Eine analoge Uhr 399
Das Boss-Puzzle oder Jeu de Taquin 404

11 Bilder und Bitmaps 411
Überblick über die Bitmapunterstützung 413
Bitmap-Dateiformate 414
Laden und zeichnen 418
Bildinformationen 422
Das Bild anzeigen 426
In ein Rechteck einpassen 428
Rotation und Scherung 433
Einen Bildausschnitt anzeigen 435
Auf Bildern zeichnen 439
Näheres zur Klasse Image 443
Die Klasse Bitmap 446
»Hello World« mit einer Bitmap 448
Im Hintergrund zeichnen 449
Binäre Ressourcen 452
Animationen 456
Die Bildliste 462
Das Objekt PictureBox 465

12 Schaltflächen, Label und Laufleisten 469
Schaltflächen und Klicks 470
Tastatur und Maus 474
Do it yourself! 475
Schaltflächen im Detail 476
Aussehen und Ausrichtung 479
Schaltflächen mit Bitmaps 482
Wie viele Handler? 484
Schaltflächen selber zeichnen 485
Vor Anker gehen 489
Im Dock 492
Untergeordnete Elemente 494
z-Reihenfolge 497
Das Kontrollkästchen 498
Eine Alternative mit drei Zuständen 501
Das Steuerelement Label 502
Tabstopps und die Aktivierungsreihenfolge 505
Identifizierung von Steuerelementen 506
Automatische Größenanpassung 508
Ein Hexadezimalrechner 513
Options- und Gruppenfelder 517
Bildlaufleisten 521
Es geht auch mit Schiebereglern 528

13 Bezier- und andere Spline-Kurven 533
Die Bezier-Kurve in der Praxis 534
Eine elegantere Uhr 538
Kollineare Bezier-Kurven 540
Kreise und Bögen aus Bezier-Kurven 542
Virtuelle Bezier-Skulpturen 545
Die mathematische Ableitung 546
Die kanonische Form der Spline-Kurve 550
Ableitung der kanonischen Kurve 556

14 Menüs 559
Menüs und Menüelemente 560
Tastenkombinationen für Menüs 563
Das erste Menü 565
Menüs der etwas anderen Art 567
Eigenschaften und Ereignisse von Menultem 570
Elemente markieren 572
Kontextmenüs 575
Die Auflistung der Menüelemente 578
Vorschlag für einen Menüstandard 583
Die Besitzerzeichnung 587

15 Pfade, Bereiche und Clipping 597
Ein Problem - eine Lösung 598
Der Pfad in aller Form 602
Einen Pfad erstellen 604
Einen Pfad darstellen 607
Pfadtransformationen 611
Weitere Veränderungen des Pfads 614
Clipping bei Pfaden 620
Clipping bei Bitmaps 625
Bereiche und das Clipping 628

16 Dialogfelder 631
Das erste modale Dialogfeld 632
Beendigung modaler Dialogfelder 636
Übernehmen und abbrechen 638
Die Bildschirmposition 640
Das Feld Info 643
In Dialogfeldern Eigenschaften definieren 645
Kobra, übernehmen Sie! 650
Das Dialogfeld ohne Modus 653
Standarddialogfelder 656
Schriften und Farben auswählen 657
Die Windows-Registrierung 664
Das Dialogfeld zum Öffnen von Dateien 668
Das Dialogfeld zum Speichern von Dateien 674

17 Pinsel und Stifte 679
Füllen mit Volltonfarben 680
Schraffurpinsel 681
Der Ausgabeursprung 690
Texturpinsel 692
Lineare Verläufe 697
Pfadverläufe 704
Nebeneinander anordnen 708
Stifte als Pinsel 715
Linien aus Strichen und Punkten 718
Linienenden und -Verbindungen 721

18 Edit, List und Spin 729
Einzeilige Textfelder 730
Mehrzellige Textfelder 734
Ein Editor-Klon 736
Der Editor-Klon mit Dateiein-/-ausgabe 741
Der Editor-Klon (Fortsetzung) 749
Textfelder für besondere Zwecke 763
RichTextBox 764
Quickinfos (ToolTips) 765
ListBox 772
Listenfeld + Textfeld = Kombinationsfeld 777
Auf-Ab-Steuerelemente 783

19 Schriftspielereien 793
Erste Schritte 793
Text mit Pinseln schreiben 795
Schrifttransformationen 801
Text und Pfade 811
Nicht lineare Transformationen 824

20 Symbol- und Statusleisten 831
Die einfache Statusleiste 832
Die Statusleiste und der automatische Bildlauf 834
Statusleistenflächen 837
Eigenschaften von StatusBarPanel 839
Hilfe zu Menüs 842
Die einfache Symbolleiste 848
Symbolleistenvarianten 852
Symbolleistenereignisse 855
Symbolleistenstile 859

21 Drucken 869
Drucker und Druckereinstellungen 870
Seiteneinstellungen 876
Definition eines Dokuments 879
Behandlung von Pn'niDocwment-Ereignissen 881
Die Abmessungen einer Seite 887
Der Druckcontroller 890
Das Standarddruckdialogfeld 893
Seiteneinrichtung 897
Druckvorschau 901

22 Struktur- und Listenansicht 909
Das Steuerelement Splitter 910
Strukturansichten und -knoten 923
Bilder in Strukturansichten 926
Ereignisse der Strukturansicht 928
Navigation durch die Knoten 929
Die Verzeichnisstruktur 931
Bilder anzeigen 937
Grundwissen zu Listenansichten 944
Ereignisse der Listenansicht 950

23 Metadateien 957
Vorhandene Metadateien laden und anzeigen 958
Metadateimaße und die Darstellung 960
Metadateien in Bitmaps umwandeln 967
Neue Metadateien erstellen 969
Das Begrenzungsrechteck in Metadateien 975
Metadateien und die Seitentransformation 978
Der Typ Metafile 981
EnumerateMetafile 983

24 Ausschneiden, Ziehen und Ablegen 991
Elemente und Formate 992
Die kleine (aber feine) Klasse Clipboard 992
Objekte aus der Zwischenablage abrufen 994
Datenformate der Zwischenablage 1002
Zwischenablageviewer 1010
Mehrere Zwischenablageformate verwenden 1018
Drag & Drop 1022

Anhänge

A Dateien und Streams 1031

Die wichtigste Klasse für die Dateiein-/-ausgabe 1032
Eigenschaften und Methoden von FileStream 1034
Das Problem mit FileStream 1037
Andere Streamklassen 1038
Text lesen und schreiben 1039
Binäre Dateiein-/ausgabe 1046
Die Klasse Environment 1049
Datei- und Pfadnamen analysieren 1051
Parallele Klassen 1052
Die Arbeit mit Verzeichnissen 1054
Dateimerkmale abfragen und einstellen 1059

B Die Klasse Math 1063
Numerische Datentypen 1063
Prüfen auf Ganzzahlüberlauf 1064
Der Datentyp decimal 1066
Unendlichkeit und NaNs bei Gleitkommazahlen 1068
Die Klasse Math 1070
Der Rest bei Gleitkommaberechnungen 1072
Potenzen und Logarithmen 1072
Trigonometrische Funktionen 1073

C Stringtheorie 1077
Der Datentyp char 1079
Konstruktoren und Eigenschaften von String 1081
Zeichenfolgen kopieren 1083
Zeichenfolgen konvertieren 1084
Zeichenfolgen verketten 1084
Zeichenfolgen vergleichen 1086
Zeichenfolgen durchsuchen 1089
Zurechtstutzen und Auffüllen 1090
Zeichenfolgen bearbeiten 1092
Zeichenfolgen formatieren 1092
Arrays sortieren und durchsuchen 1093
Die Klasse StringBuilder 1095

Stichwortverzeichnis 1099

Der Autor 1127