Kurs „Grundlagen der VB-Programmierung“.
Was ist APIAPI-Textbrowser?
Datentyp und „Typsicherheit“ der API-Funktionsdeklaration
konstante Struktur
Fassen Sie einige API-Funktionssätze zusammen: Steuer- und Nachrichtenfunktionen, Hardware- und Systemfunktionen, Menüfunktionen, Zeichenfunktionen
Was ist API?
Zunächst muss allen erklärt werden, was eine API ist. Die sogenannte API wurde ursprünglich für C- und C++-Programmierer geschrieben. Vereinfacht ausgedrückt ist die API eine Art Funktion. Sie ist in einer zusätzlichen dynamischen Linkbibliotheksdatei namens DLL enthalten. Gemäß der Standarddefinition ist API die 32-Bit-Anwendungsprogrammierschnittstelle von Windows. Es handelt sich um eine Reihe sehr komplexer Funktionen, Nachrichten und Strukturen. Sie ermöglicht es Programmierern, verschiedene Arten von Programmiersprachen zu verwenden, um laufende Programme zu kompilieren auf Windows 95- und Windows NT-Anwendungen auf dem System. Man kann sagen, dass API für Sie kein Problem darstellt, wenn Sie jemals VC studiert haben. Aber wenn Sie VC nicht gelernt haben oder mit der Struktur von Windows95 nicht vertraut sind, kann man sagen, dass das Erlernen der API eine sehr schwierige Sache sein wird.
Wenn Sie den SYSTEM-Ordner von WINDOWS öffnen, werden Sie feststellen, dass dort viele zusätzliche Dateien mit dem Namen DLL vorhanden sind. Eine DLL enthält nicht nur eine API-Funktion, sondern Dutzende oder sogar Hunderte. Können wir es alle meistern? Die Antwort ist nein: Es ist unmöglich, es zu meistern. Tatsächlich müssen wir sie jedoch nicht alle beherrschen. Wir müssen uns nur auf die Beherrschung der API-Funktionen konzentrieren, die mit dem Windos-System selbst ausgestattet sind. Allerdings sollten auch Funktionen verworfen werden, die die eigenen Funktionen von VB duplizieren. Zum Beispiel VB
Der Befehl etAttr kann Dateiattribute abrufen und SetAttr kann Dateiattribute festlegen. Auch für die API gibt es entsprechende Funktionen
GetFileAttributes und SetFileAttributes weisen eine ähnliche Leistung auf. Nach einer solchen Berechnung bleiben nur noch 500 oder 600 übrig. Ja, ziemlich viele. Ich kann Ihnen jedoch sagen, dass Ihr Programmierniveau mindestens doppelt so hoch sein wird wie jetzt, solange Sie 100 davon vertraut beherrschen. Obwohl die Leute sagen, dass VB und WINDOWS eine enge Beziehung haben, denke ich, dass die API enger zusammenhängt
FENSTER. Wenn Sie die API erlernen, ist der erste Gewinn Ihr Verständnis der WINDOWS-Architektur. Dieser Gewinn ist nicht einfach.
Was würde passieren, wenn Sie sich nicht auf APIs verlassen würden? Ich kann Ihnen sagen, dass es sich bei den meisten davon um fortgeschrittene Programmierbücher handelt (das liegt natürlich nicht daran, dass der Titel des Buchs „fortgeschritten“ lautet, sondern „fortgeschritten“ im „Inhalt von“) Dieses Buch“ am Anfang). Die Bücher sind für Leser mit einer gewissen VB-Grundlage gedacht, und die ersten Fragen beginnen normalerweise mit der API. Daher kann man sagen, dass man, wenn man API nicht lernt, wahrscheinlich auf der Junior-Ebene bleibt und nicht aufsteigen kann. Die einzige Möglichkeit besteht darin, andere um Hilfe zu bitten: Ich sterbe, komm und rette mich, was soll ich damit machen, was soll ich damit machen? Sind Sie jetzt natürlich genervt? (mich eingeschlossen, hehe), aber Sie sollten verstehen, dass Sie mit dieser Methode keine guten Werke in Ihren Händen hervorbringen können. Denn ohne dieses Wissen können Sie sich im Kopf kein gestalterisches Gesamtkonzept ausdenken.
API-Textbrowser[return]
Viele API-Funktionen sind sehr lang. Möchten Sie sehen, wie es aussieht? Hier ist die APIDdeClientTransaction-Funktion als Beispiel:
DeclareFunctionDdeClientTransactionLib"user32"(pDataAsByte,ByValcbDataAsLong,ByValhConvAsLong,ByValhszItemAsLong,ByValwFmtAsLong,ByValwTypeAsLong,ByValdwTimeoutAsLong,pdwResultAsLong)AsLong
Wow! So lange? Wenn Sie noch nie API ausgesetzt waren, müssen Sie wahrscheinlich eingeschüchtert sein. Vielleicht denken Sie darüber nach, ob Sie weiter lernen sollten. Aber keine Sorge, zum Glück stellen uns die Microsoft-Designer nützliche Tools zur Verfügung, das ist die API
Textbetrachter.
Über den API-Text-Viewer können wir die vom Programm benötigten Funktionsdeklarationen, Strukturtypen und Konstanten leicht finden, sie dann in die Zwischenablage kopieren und schließlich in das Codesegment des VB-Programms einfügen. In den meisten Fällen können wir, solange wir die drei Aspekte der für das Programm erforderlichen Funktionen, Strukturen und Konstanten bestimmen, diese über die oben genannten Vorgänge im API-Textbrowser zum Programmsegment hinzufügen, damit diese im Programm verwendet werden können . Funktion. Dies sind die grundlegendsten Fragen des gesunden Menschenverstandes zum Erlernen der API, und sie sind weitaus geringer als der riesige Systeminhalt der API. Wo werden wir in Zukunft unsere Energie verschwenden (das ist keine Verschwendung)?
Wann ist welche Funktion zu verwenden, wann welcher Strukturtyp, wann welche Konstante.
API-Funktionsdeklaration
Denken wir zurück. Wie deklariere ich in VB eine Funktion? Ich denke, wenn Sie diesen Artikel lesen, können Sie diese Frage definitiv beantworten. Hier ist eine Funktionsdeklaration, die Ihnen bekannt sein dürfte:
FunctionSetFocus(ByValhwndAsLong)AsLong
Das heißt, diese Codezeile definiert eine Funktion mit dem Namen SetFocus. Diese Funktion hat einen Parameter vom Datentyp Long und wird als Wert (ByVal) übergeben. Nach der Ausführung der Funktion werden Long-Daten zurückgegeben.
Auch die Deklaration von API-Funktionen ist sehr ähnlich. Beispielsweise ist die SetFocus-Funktion in der API so geschrieben:
DeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Es ist etwas komplizierter. Ja, es ist etwas komplizierter. Aber ich kann Ihnen sagen, dass die anderen Teile bis auf diese zusätzlichen Teile immer noch die gleichen sind wie das, was Sie zuvor gelernt haben. Das Gleiche gilt für Funktionsaufrufe in Programmen. wie:
DimdlAsLong
dl&=SetFoucs(Form1.Hwnd)
Aber eines ist klar. Es ist nicht wie ein Programm, das Sie selbst schreiben und bei dem Sie den Betriebsmechanismus sehen können, und es ist auch nicht wie VB
Wie bei den integrierten Funktionen können Sie deren Verwendung in der Online-Hilfe von VB nachlesen. Die einzige Möglichkeit besteht darin, andere Informationen als VB zu lernen und nachzuschlagen.
Die Declare-Anweisung wird verwendet, um einen Verweis auf eine externe Prozedur in einer Dynamic Link Library (DLL) auf Modulebene zu deklarieren. Dazu müssen Sie nur bedenken, dass jede API-Funktionsdeklaration diese Anweisung schreiben muss.
Iib gibt die dynamische Linkbibliothek oder Coderessource an, die die deklarierte Prozedur oder Funktion enthält. Mit anderen Worten: Es erklärt die Frage, woher die Funktion oder der Prozess kommt.
Wie im obigen Beispiel gibt SetFocusLib „user32“ an, dass die Funktion SetFocus aus der Datei user32.dll stammt. Die wichtigsten DLL-Dynamic-Link-Bibliotheksdateien sind:
user32.dllWindows-Verwaltung. Generieren und verwalten Sie die Benutzeroberfläche der Anwendung.
GDI32.dll-Grafikgeräteschnittstelle. Erstellen Sie grafische Ausgaben für Windows-Geräte
Kernel32.dll-Systemdienst. Greifen Sie auf die Computerressourcen des Betriebssystems zu.
Beachten Sie, dass, wenn sich die DLL-Datei nicht im Windows- oder Systemordner befindet, ihre Quelle in der Funktion angegeben werden muss (
Weg). Zum Beispiel SetFocusLib „c:/Mydll/user32“
Alias in Funktionsdeklarationen sind optional. Zeigt an, dass die aufzurufende Prozedur einen anderen Namen (Alias) in der Dynamic Link Library (DLL) hat. Der Alias „SetFocus“ gibt beispielsweise an, dass der andere Name der SetFocus-Funktion in User32.dll lautet:
SetFocus. Warum sind die beiden Namen gleich? Natürlich können sie auch unterschiedlich sein. In vielen Fällen wird der Funktionsname durch Alias beschrieben, d. h. das letzte Zeichen des Alias ist oft das Zeichen A. Ein anderer Name der SetWindowsText-Funktion ist beispielsweise
SetWindowsTextA, ausgedrückt als Alias „SetWindowsTextA“. Dieses A ist lediglich eine von Designern verwendete Namenskonvention, die darauf hinweist, dass die Funktion zur ANSI-Version gehört.
Was genau ist also der Nutzen von Aliasen? Theoretisch stellen Aliase funktionale Methoden zum Aufrufen von APIs mit einem anderen Namen bereit. Wenn Sie einen Alias angeben, rufen wir die Funktion zwar entsprechend der Funktion nach der Declare-Anweisung auf, der Alias ist jedoch die erste Wahl für den tatsächlichen Aufruf der Funktion. Beispielsweise sind die folgenden zwei Funktionsdeklarationen (Function, ABCD) gültig und rufen dieselbe SetFocus-Funktion auf:
DeclareFunctionSetFocusLib"user32""SetFocus"(ByValhwndAsLong)AsLong
Deklarieren Sie ABCDSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Es ist zu beachten, dass Sie bei der Auswahl von Alias auf die Groß- und Kleinschreibung des Alias achten sollten. Wenn Sie Alias nicht auswählen, muss der Funktionsname auf die Groß- und Kleinschreibung achten und kann nicht geändert werden. In vielen Fällen natürlich, da die Funktionsdeklaration direkt von der API stammt
Es wird aus dem Textbrowser kopiert, daher ist die Wahrscheinlichkeit, dass dieser Fehler auftritt, sehr gering, Sie müssen dies jedoch wissen.
Eine letzte Erinnerung: API-Deklarationen (einschließlich Strukturen und Konstanten) müssen im Abschnitt „GeneralDeclarations“ des Formulars oder Moduls platziert werden.
Datentypen und „Typsicherheit“
Die in API-Funktionen verwendeten Datentypen sind grundsätzlich dieselben wie in VB. Als API-Funktion von WIN32 existiert Integer jedoch nicht
Datentyp. Ein weiterer Punkt ist, dass der Datentyp Boolean in API-Funktionen nicht sichtbar ist. Der Variant-Datentyp erscheint in der Form „Any“ in API-Funktionen, z. B. „DataAsAny“. Obwohl dies impliziert, dass jeder Parametertyp als Parameter dieser API-Funktion übergeben werden darf, gibt es dabei bestimmte Nachteile. Der Grund dafür ist, dass dadurch sämtliche Typprüfungen der Zielparameter deaktiviert werden. Dies führt natürlich zu Fehlermöglichkeiten bei verschiedenen Arten von Parameteraufrufen.
Um eine strenge Typprüfung durchzusetzen und die oben genannten Probleme zu vermeiden, besteht eine Möglichkeit darin, die oben erwähnte Alias-Technologie in der Funktion zu verwenden. Beispielsweise kann eine andere Deklarationsmethode für die API-Funktion GetDIBits verwendet werden. Wie folgt:
Prototyp der GetDIBits-Funktion:
PublicDeclareFunctionGetDIBitsLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsAny,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
Änderung der GetDIBits-Funktion:
PublicDeclareFunctionGetDIBitsLongLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsLong,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
Durch die zuvor in diesem Kurs erworbenen Kenntnisse können wir bereits wissen, ob der Prototyp der GetDIBits-Funktion oder die modifizierte GetDIBitsLong-Funktion tatsächlich die ursprüngliche, durch Alias angegebene GetDIBits-Funktion aufruft. Sie sollten jedoch erkennen, dass der Unterschied zwischen den beiden darin besteht, dass wir den Parameter lpBits in der geänderten Funktion auf Long setzen. Dadurch wird die Wahrscheinlichkeit von Fehlern bei Funktionsaufrufen minimiert. Dieser Ansatz wird als „sichere Typ“-Deklaration bezeichnet.
Die in API-Funktionen häufig vorkommenden Datentypen sind: Long, String, Byte, Any... (Das ist alles.)
Konstante
API-Konstanten sind nichts Besonderes. Bitte schauen Sie sich den folgenden Code in VB an:
Msg=MsgBox("Hallo",vbOKCancel)
Wir wissen, dass der Wert der Konstante vbOKCancel gleich 1 ist. Wir können den obigen Code wie folgt schreiben, ohne die Funktion des Codes zu beeinträchtigen:
Msg=MsgBox("Hallo",1)
Sie sind jedoch möglicherweise nicht bereit, die letztere Option zu wählen, da sie das Verständnis des Codes erschwert. Diesen Ansatz verfolgt auch die API. Es ist nur so, dass die API-Konstanten vor dem Ereignis initialisiert und deklariert werden müssen, was VB selbst nicht verstehen kann. Der Inhalt stammt weiterhin von der API
Textbrowser. Das konkrete Formular lautet wie folgt:
PublicConstABM_ACTIVATE=&H6
PublicConstRIGHT_CTRL_PRESSED=&H4
PublicConstRPC_E_SERVER_DIED=&H80010007
PrivateConstRPC_S_CALL_FAILED_DNE=1727&
Bei der Initialisierung von Konstanten verwenden einige Programme Global, wie z. B. GlobalConstABM_ACTIVATE=&H6, aber ich denke, Public kann es vollständig ersetzen. Ich habe Global in der Vergangenheit verwendet, aber jetzt nicht mehr oft. Wenn Sie dieses und jenes jetzt verwenden, können Sie die Konsistenz zwischen den Programmen nicht aufrechterhalten, oder es sieht zumindest umständlich aus.
Struktur[Rückgabe]
Struktur ist die Sprache von C und C++. In VB allgemein als benutzerdefinierte Datentypen bezeichnet. Vermutlich wissen es schon viele Freunde. Im API-Bereich nenne ich es lieber Struktur, da die verschiedenen Strukturtypen der API von mir überhaupt nicht definiert werden (
individuell angepasst).
In VB wird die API-Struktur auch durch die TYPE....ENDTYPE-Anweisung definiert. In der API ist die Punktstruktur beispielsweise wie folgt definiert:
PublicTypePOINTAPI
XAsLong'-Koordinatenwert des Punktes auf der X-Koordinate (Abszisse)
YAsLong'Der Koordinatenwert des Punktes auf der Y-Koordinate (Ordinate)
EndType
Als weiteres Beispiel lautet die Definition der rechteckigen (Rect)-Struktur in der API wie folgt:
PublicTypeRECT
LeftAsLong'X-Koordinate der oberen linken Ecke des Rechtecks
TopAsLong' Y-Koordinate der oberen linken Ecke des Rechtecks
RightAsLong'X-Koordinate der unteren rechten Ecke des Rechtecks
BottomAsLong' Y-Koordinate der unteren rechten Ecke des Rechtecks
EndType
Dieser Inhalt kann auch aus dem API-Textbrowser kopiert werden. Die Variablennamen in diesen Strukturen können beliebig geändert werden, ohne dass sich dies auf die Struktur selbst auswirkt. Mit anderen Worten, diese Mitgliedsvariablen sind alle virtuell. Die POINTAPI-Struktur kann beispielsweise wie folgt geändert werden:
PublicTypePOINTAPI
MyXAsLong'Der Koordinatenwert des Punktes auf der X-Koordinate (Abszisse)
MyYAsLong'Der Koordinatenwert des Punktes auf der Y-Koordinate (Ordinate)
EndType
Im Allgemeinen ist dies jedoch nicht notwendig. Die Struktur selbst ist ein Datentyp. Daher müssen Sie bei ihrer Verwendung die spezifische Variable als den Strukturtyp deklarieren, bevor Sie die Struktur tatsächlich im Programm verwenden können. Die Deklarationsmethode der Struktur ist dieselbe wie die Deklarationsmethode anderer Daten. Die folgende Anweisung deklariert beispielsweise die Variable MyPoint als POINTAPI-Strukturtyp:
MyPointAsPOINTAPI
Es ist auch sehr einfach, die Mitgliedsvariablen in der Struktur zu referenzieren. Fügen Sie einfach ein „.“ nach dem Strukturnamen hinzu und schreiben Sie dann die zu referenzierende Mitgliedsvariable. Dies ähnelt dem Verweisen auf eine Eigenschaft eines Objekts in VB. Wenn wir beispielsweise den Wert der X-Variablen in der oben deklarierten MyPoint-Struktur der Variablen Temp& zuweisen
Der Code lautet wie folgt:
Temp&=MyPoint.X
Es ist jedoch wichtig zu beachten, dass Sie nicht denken dürfen, dass MyPoint im obigen Beispiel ein Wert ist. Es handelt sich nicht um einen Wert, sondern um eine Adresse (
Zeiger). Wert und Adresse sind völlig unterschiedliche Konzepte. Strukturanforderungen werden durch Verweis auf WINDOWS-Funktionen, also alle APIs, übergeben
In Funktionen werden Strukturen per ByRef übergeben (ByRef ist der Standardtyp in der Declare-Anweisung). Versuchen Sie zum Übergeben von Strukturen nicht, ByVal zu verwenden, da Sie sonst nichts erhalten. Da der Strukturname tatsächlich ein Zeiger auf die Struktur ist (die erste Adresse der Struktur), können Sie einfach den spezifischen Strukturnamen übertragen (siehe Zusammenfassung, ich habe rote Schrift verwendet, um diese Übertragungsmethode hervorzuheben).
Da die Struktur einen Zeiger übergibt, liest und schreibt die Funktion die Struktur direkt. Diese Funktion eignet sich sehr gut zum Laden der Ergebnisse der Funktionsausführung in Strukturen.
Zusammenfassung[return]
Das folgende Verfahren soll zusammenfassen, was in dieser Lektion gelernt wurde. Starten Sie VB, erstellen Sie ein neues Projekt, fügen Sie eine Befehlsschaltfläche hinzu, kopieren Sie den folgenden Code in das Codesegment und führen Sie ihn aus.
PrivateDeclareFunctionGetCursorPosLib"user32"(lpPointAsPOINTAPI)AsLong
PrivateTypePOINTAPI'definiert die Punktstruktur
XAsLong'-Koordinatenwert des Punktes auf der X-Koordinate (Abszisse)
YAsLong'Der Koordinatenwert des Punktes auf der Y-Koordinate (Ordinate)
EndType
SubPrintCursorPos()
DimdlASLong
DimMyPointAsPOINTAPI
dl&=GetCursorPos(MyPoint)'Rufen Sie die Funktion auf, um die Bildschirmmauskoordinaten abzurufen
Debug.Print"X="&Str(MyPoint.X)&"and"&"Y="&Str(MyPoint.Y)
EndSub
PrivateSubCommand1_Click()
PrintCursorPos
EndSub
Das Ausgabeergebnis ist (jeder Lauf kann unterschiedliche Ergebnisse liefern, was durch die Position des Mauszeigers auf dem Bildschirm beim Aufruf der Funktion bestimmt wird):
X=240 und Y=151
Im Programm wird die Funktion GetCursorPos verwendet, um die Position des Mauszeigers auf dem Bildschirm zu ermitteln.
Im obigen Beispiel können Sie feststellen, dass der Inhalt der als Parameter übergebenen MyPpint-Struktur nach dem Funktionsaufruf erhebliche Änderungen erfahren hat. Dies liegt daran, dass die Struktur von ByRef übergeben wird.
Einige API-Funktionssätze [return]
WindowsAPI
1. Bedienelemente und Nachrichtenfunktionen
AdjustWindowRect Berechnen Sie bei gegebenem Fensterstil die erforderliche Fenstergröße, um das Rechteck des Ziel-Clientbereichs zu erhalten
AnyPopup ermittelt, ob Popups auf dem Bildschirm angezeigt werden
ArrangeIconicWindows ordnet minimierte untergeordnete Fenster eines übergeordneten Fensters an
AttachThreadInput-Verbindungsthread-Eingabefunktion
BeginDeferWindowPos startet den Prozess des Aufbaus einer Reihe neuer Fensterpositionen
BringWindowToTop bringt das angegebene Fenster an den Anfang der Fensterliste
CascadeWindows ordnet Fenster kaskadierend an
ChildWindowFromPoint gibt das Handle des ersten untergeordneten Fensters im übergeordneten Fenster zurück, das den angegebenen Punkt enthält.
ClientToScreen bestimmt die Bildschirmkoordinaten eines Punktes im Fenster, der durch Clientbereichskoordinaten dargestellt wird
CloseWindow minimiert das angegebene Fenster
CopyRect-Rechteck-Inhaltskopie
DeferWindowPos Diese Funktion gibt eine neue Fensterposition für ein bestimmtes Fenster an
DestroyWindow löscht das angegebene Fenster und alle seine untergeordneten Fenster
DrawAnimatedRects stellt eine Reihe dynamischer Rechtecke dar
EnableWindow ermöglicht oder deaktiviert alle Maus- und Tastatureingaben im angegebenen Fenster.
EndDeferWindowPos aktualisiert gleichzeitig die Positionen und den Status aller Fenster, die beim Aufruf von DeferWindowPos angegeben werden.
EnumChildWindows zählt untergeordnete Fenster für das angegebene übergeordnete Fenster auf
EnumThreadWindows zählt die Fenster auf, die sich auf die angegebene Aufgabe beziehen
EnumWindows listet alle übergeordneten Fenster in der Fensterliste auf
EqualRect bestimmt, ob zwei rechteckige Strukturen gleich sind
FindWindow findet das erste Fenster der obersten Ebene in der Fensterliste, das die angegebenen Kriterien erfüllt
FindWindowEx sucht nach dem ersten Unterfenster in der Fensterliste, das den angegebenen Bedingungen entspricht
FlashWindow lässt das angegebene Fenster blinken
GetActiveWindow ruft das Handle des aktiven Fensters ab
GetCapture ruft das Handle eines Fensters ab, das sich im aktuellen Eingabethread befindet und über Mauserfassung verfügt (Mausaktivität wird von ihm empfangen).
GetClassInfo ruft eine Kopie der WNDCLASS-Struktur (oder WNDCLASSEX-Struktur) ab, die Informationen zur angegebenen Klasse enthält.
GetClassLong ruft einen Long-Variableneintrag der Fensterklasse ab
GetClassName ruft den Klassennamen für das angegebene Fenster ab
GetClassWord ruft eine Ganzzahlvariable für die Fensterklasse ab
GetClientRect gibt die Größe des Rechtecks im Clientbereich des angegebenen Fensters zurück
GetDesktopWindow ruft ein Fenster-Handle (Desktop-Fenster) ab, das den gesamten Bildschirm darstellt
GetFocus ruft das Handle des Fensters mit Eingabefokus ab
GetForegroundWindow ruft das Handle des Frontfensters ab
GetLastActivePopup Ruft das Handle für das zuletzt aktivierte Popup-Fenster in einem bestimmten übergeordneten Fenster ab
GetLastError zielt auf die zuvor aufgerufene API-Funktion ab. Verwenden Sie diese Funktion, um erweiterte Fehlerinformationen zu erhalten.
GetParent bestimmt das übergeordnete Fenster des angegebenen Fensters
GetTopWindow durchsucht die interne Fensterliste nach dem Handle des ersten Fensters, das zum angegebenen Fenster gehört
GetUpdateRect ruft ein Rechteck ab, das den Teil des angegebenen Fensters beschreibt, der aktualisiert werden muss
GetWindow ruft das Handle eines Fensters ab, das eine bestimmte Beziehung zu einem Quellfenster hat
GetWindowContextHelpId ruft die dem Fenster zugeordnete Hilfeszenen-ID ab
GetWindowLong ruft Informationen aus der Struktur des angegebenen Fensters ab
GetWindowPlacement ruft die Status- und Standortinformationen des angegebenen Fensters ab
GetWindowRect ruft das Bereichsrechteck des gesamten Fensters ab. Der Rahmen, die Titelleiste, die Bildlaufleiste, das Menü usw. liegen alle innerhalb dieses Rechtecks.
GetWindowText ruft den Titeltext eines Formulars oder den Inhalt eines Steuerelements ab
GetWindowTextLength untersucht die Länge des Fenstertiteltextes oder des Steuerelementinhalts
GetWindowWord ruft Informationen über die angegebene Fensterstruktur ab
InflateRect vergrößert oder verkleinert die Größe eines Rechtecks
Die IntersectRect-Funktion lädt ein Rechteck in lpDestRect, das den Schnittpunkt zweier Rechtecke, lpSrc1Rect und lpSrc2Rect, darstellt.
InvalidateRect blockiert den gesamten oder einen Teil des Clientbereichs eines Fensters
IsChild bestimmt, ob ein Fenster ein untergeordnetes oder untergeordnetes Fenster eines anderen Fensters ist
IsIconic ermittelt, ob das Fenster minimiert wurde
IsRectEmpty bestimmt, ob ein Rechteck leer ist
IsWindow bestimmt, ob ein Fensterhandle gültig ist
IsWindowEnabled bestimmt, ob das Fenster aktiv ist
IsWindowUnicode bestimmt, ob ein Fenster ein Unicode-Fenster ist. Das bedeutet, dass das Fenster Unicode-Literale für alle textbasierten Nachrichten empfängt
IsWindowVisible bestimmt, ob das Fenster sichtbar ist
IsZoomed bestimmt, ob das Fenster maximiert ist
LockWindowUpdate sperrt das angegebene Fenster und verhindert, dass es aktualisiert wird
MapWindowPoints konvertiert Punkte in den Clientbereichskoordinaten eines Fensters in das Clientbereichskoordinatensystem eines anderen Fensters
MoveWindow ändert die Position und Größe des angegebenen Fensters
OffsetRect bewirkt, dass das Rechteck durch Anwenden eines angegebenen Versatzes verschoben wird
OpenIcon stellt ein minimiertes Programm wieder her und aktiviert es
PtInRect bestimmt, ob der angegebene Punkt innerhalb des Rechtecks liegt
RedrawWindow zeichnet das gesamte Fenster oder einen Teil davon neu
ReleaseCapture gibt die Mauserfassung für die aktuelle Anwendung frei
ScreenToClient ermittelt die Clientbereichskoordinaten eines angegebenen Punkts auf dem Bildschirm
ScrollWindow ist der gesamte Clientbereich oder ein Teil davon des Scrollfensters
ScrollWindowEx scrollt je nach zusätzlichen Optionen den gesamten oder einen Teil des Clientbereichs des Fensters.
SetActiveWindow aktiviert das angegebene Fenster
SetCapture setzt die Mauserfassung auf das angegebene Fenster
SetClassLong legt einen Long-Variableneintrag für die Fensterklasse fest
SetClassWord legt einen Eintrag für die Fensterklasse fest
SetFocusAPI setzt den Eingabefokus auf das angegebene Fenster. Bei Bedarf wird das Fenster aktiviert
SetForegroundWindow legt das Fenster als Frontfenster des Systems fest
SetParent gibt das neue übergeordnete Element eines Fensters an
SetRect legt den Inhalt des angegebenen Rechtecks fest
SetRectEmpty setzt das Rechteck auf ein leeres Rechteck
SetWindowContextHelpId legt die Hilfeszenen-(Kontext-)ID für das angegebene Fenster fest
SetWindowLong legt Informationen für das angegebene Fenster in der Fensterstruktur fest
SetWindowPlacement legt Fensterstatus- und Positionsinformationen fest
SetWindowPos gibt eine neue Position und einen neuen Zustand für das Fenster an
SetWindowText legt den Titeltext des Fensters oder den Inhalt des Steuerelements fest
SetWindowWord legt Informationen für das angegebene Fenster in der Fensterstruktur fest
ShowOwnedPopups Zeigt alle Popup-Fenster an oder verbirgt sie, die dem angegebenen Fenster gehören
ShowWindow steuert die Sichtbarkeit eines Fensters
ShowWindowAsync ähnelt ShowWindow
SubtractRect lädt das Rechteck lprcDst, das das Ergebnis der Subtraktion von lprcSrc2 vom Rechteck lprcSrc1 ist
TileWindows ordnet Fenster in Kachelreihenfolge an
UnionRect lädt ein lpDestRect-Zielrechteck, das das Ergebnis der Vereinigung von lpSrc1Rect und lpSrc2Rect ist
UpdateWindow erzwingt eine sofortige Fensteraktualisierung
ValidateRect validiert den gesamten oder einen Teil des Clientbereichs des Fensters
WindowFromPoint gibt das Handle für das Fenster zurück, das den angegebenen Punkt enthält. Ignorieren Sie maskierte, ausgeblendete und transparente Fenster
2.Hardware und Systemfunktionen
ActivateKeyboardLayout aktiviert ein neues Tastaturlayout. Das Tastaturlayout definiert die Position und Bedeutung der Tasten auf einer physischen Tastatur
Beep wird verwendet, um einfache Töne zu erzeugen
CharToOem konvertiert eine Zeichenfolge vom ANSI-Zeichensatz in den OEM-Zeichensatz
ClipCursor begrenzt den Zeiger auf den angegebenen Bereich
ConvertDefaultLocale wandelt einen speziellen lokalen Bezeichner in eine echte lokale ID um
CreateCaret erstellt ein Caret (Cursor) basierend auf den angegebenen Informationen und wählt es als Standard-Caret für das angegebene Fenster aus
DestroyCaret löscht (zerstört) ein Caret
EnumCalendarInfo zählt die Kalenderinformationen auf, die in der angegebenen „lokalen“ Umgebung verfügbar sind
EnumDateFormats listet die langen und kurzen Datumsformate auf, die in der angegebenen „lokalen“ Einstellung verfügbar sind
EnumSystemCodePages zählt die installierten oder unterstützten Codepages auf dem System auf
EnumSystemLocales zählt die „lokalen“ Einstellungen auf, die das System installiert hat oder die Unterstützung bietet
EnumTimeFormats listet die Zeitformate auf, die für einen angegebenen Ort gelten
ExitWindowsEx beendet Windows und startet mit bestimmten Optionen neu
ExpandEnvironmentStrings erweitert die Umgebungszeichenfolge
FreeEnvironmentStrings übersetzt den angegebenen Umgebungszeichenfolgenblock
GetACP ermittelt die derzeit gültige ANSI-Codepage
GetAsyncKeyState bestimmt den Status des angegebenen virtuellen Schlüssels, wenn die Funktion aufgerufen wird
GetCaretBlinkTime bestimmt die Blinkfrequenz des Caret-Cursors
GetCaretPos ermittelt die aktuelle Position des Cursors
GetClipCursor Ruft ein Rechteck ab, das den aktuell für den Mauszeiger angegebenen Beschneidungsbereich beschreibt
GetCommandLine ruft einen Zeiger auf den aktuellen Befehlszeilenpuffer ab
GetComputerName ruft den Namen dieses Computers ab
GetCPInfo ruft Informationen zur angegebenen Codepage ab
GetCurrencyFormat formatiert eine Zahl entsprechend dem Währungsformat für die angegebene „lokale“ Einstellung
GetCursor Ruft das Handle des aktuell ausgewählten Mauszeigers ab
GetCursorPos ermittelt die aktuelle Position des Mauszeigers
GetDateFormat formatiert ein Systemdatum in einem angegebenen „lokalen“ Format
GetDoubleClickTime bestimmt das Zeitintervall zwischen zwei aufeinanderfolgenden Mausklicks, das als Doppelklickereignis verarbeitet wird.
GetEnvironmentStrings weist einem Speicherblock, der die aktuellen Umgebungszeichenfolgeneinstellungen enthält, ein Handle zu und gibt es zurück.
GetEnvironmentVariable ruft den Wert einer Umgebungsvariablen ab
GetInputState ermittelt, ob Maus- oder Tastaturereignisse ausstehen (auf die Verarbeitung warten).
GetKBCodePage wird durch GetOEMCP ersetzt, beide Funktionen sind genau gleich
GetKeyboardLayout ruft ein Handle ab, das das Tastaturlayout der angegebenen Anwendung beschreibt
GetKeyboardLayoutList ruft eine Liste aller für das System anwendbaren Tastaturlayouts ab
GetKeyboardLayoutName ruft den Namen des aktuell aktiven Tastaturlayouts ab
GetKeyboardState ruft den aktuellen Status jeder virtuellen Taste auf der Tastatur ab
GetKeyboardType ruft Informationen über die verwendete Tastatur ab
GetKeyNameText ermittelt den Schlüsselnamen anhand des Scancodes.
GetKeyState ermittelt den Status des angegebenen virtuellen Schlüssels für die Schlüssel, die bei der letzten Eingabe der Informationen verarbeitet wurden.
GetLastError zielt auf die zuvor aufgerufene API-Funktion ab. Verwenden Sie diese Funktion, um erweiterte Fehlerinformationen zu erhalten.
GetLocaleInfo ruft Informationen zum angegebenen „Ort“ ab.
GetLocalTime ruft das lokale Datum und die lokale Uhrzeit ab
GetNumberFormat formatiert eine Zahl in einem bestimmten Format für den angegebenen „Ort“.
GetOEMCP bestimmt die Windows-Codepage zur Konvertierung zwischen OEM- und ANSI-Zeichensätzen
GetQueueStatus bestimmt den Nachrichtentyp, der in der Anwendungsnachrichtenwarteschlange aussteht (auf Verarbeitung wartet).
GetSysColor bestimmt die Farbe des angegebenen Windows-Anzeigeobjekts
GetSystemDefaultLangID ruft die Standardsprachen-ID des Systems ab
GetSystemDefaultLCID ruft den aktuellen Standardsystem-„Ort“ ab.
GetSystemInfo ruft Informationen zur zugrunde liegenden Hardwareplattform ab
GetSystemMetrics gibt Informationen zur Windows-Umgebung zurück
GetSystemPowerStatus ruft Informationen zum aktuellen Systemstromstatus ab
GetSystemTime ruft die aktuelle Systemzeit ab. Diese Zeit verwendet das Format „Koordinierte Weltzeit“ (d. h. UTC, auch GMT genannt).
GetSystemTimeAdjustment synchronisiert die interne Systemuhr mit einer externen Taktquelle
GetThreadLocale ruft die lokale ID des aktuellen Threads ab
GetTickCount wird verwendet, um die Zeitspanne (Millisekunden) zu ermitteln, die seit dem Start von Windows vergangen ist
GetTimeFormat formatiert eine Systemzeit in einem bestimmten Format für den aktuell angegebenen „Ort“.
GetTimeZoneInformation ruft Informationen zu den Zeitzoneneinstellungen des Systems ab
GetUserDefaultLangID ruft die Standardsprachen-ID für den aktuellen Benutzer ab
GetUserDefaultLCID Ruft die standardmäßigen „lokalen“ Einstellungen des aktuellen Benutzers ab
GetUserName ruft den Namen des aktuellen Benutzers ab
GetVersion ermittelt die aktuell ausgeführten Windows- und DOS-Versionen
GetVersionEx ruft Versionsinformationen zur Plattform und zum Betriebssystem ab
HideCaret verbirgt das Caret (Cursor) im angegebenen Fenster
IsValidCodePage bestimmt, ob eine Codepage gültig ist
IsValidLocale bestimmt, ob der lokale Bezeichner gültig ist
Die Funktion keybd_event simuliert Tastaturaktionen
LoadKeyboardLayout lädt ein Tastaturlayout
MapVirtualKey führt basierend auf dem angegebenen Zuordnungstyp verschiedene Scancode- und Zeichenkonvertierungen durch.
MapVirtualKeyEx führt basierend auf dem angegebenen Zuordnungstyp verschiedene Scancode- und Zeichenkonvertierungen durch.
MessageBeep spielt einen Systemton ab. Der Systemschallverteilungsplan wird im Bedienfeld festgelegt
mouse_event simuliert ein Mausereignis
OemKeyScan ermittelt den Scancode und den Umschalttastenstatus eines ASCII-Zeichens im OEM-Zeichensatz
OemToChar konvertiert eine Zeichenfolge vom OEM-Zeichensatz in den ANSI-Zeichensatz
SetCaretBlinkTime gibt die Blinkfrequenz des Cursors (Cursors) an.
SetCaretPos gibt die Position des Cursors an
SetComputerName legt einen neuen Computernamen fest
SetCursor setzt den angegebenen Mauszeiger auf den aktuellen Zeiger
SetCursorPos legt die Position des Zeigers fest
SetDoubleClickTime legt das Zeitintervall zwischen zwei aufeinanderfolgenden Mausklicks fest, das das System als Doppelklickereignis betrachtet.
SetEnvironmentVariable setzt eine Umgebungsvariable auf einen angegebenen Wert
SetKeyboardState legt den aktuellen Status jeder virtuellen Taste auf der Tastatur fest
SetLocaleInfo ändert die „lokalen“ Einstellungsinformationen des Benutzers
SetLocalTime legt die aktuelle Ortszeit fest
SetSysColors legt die Farbe des im angegebenen Fenster angezeigten Objekts fest
SetSystemCursor ändert jeden Standardsystemzeiger
SetSystemTime legt die aktuelle Systemzeit fest
SetSystemTimeAdjustment fügt regelmäßig einen Kalibrierungswert hinzu, um die interne Systemuhr mit einer externen Taktsignalquelle zu synchronisieren.
SetThreadLocale legt das Gebietsschema für den aktuellen Thread fest
SetTimeZoneInformation legt Systemzeitzoneninformationen fest
ShowCaret zeigt das Caret (Cursor) im angegebenen Fenster an
ShowCursor steuert die Sichtbarkeit des Mauszeigers
SwapMouseButton bestimmt, ob die Funktionen der linken und rechten Maustaste vertauscht werden sollen
SystemParametersInfo ruft eine große Anzahl von Windows-Systemparametern ab und legt diese fest
SystemTimeToTzSpecificLocalTime konvertiert die Systemzeit in die Ortszeit
ToAscii wandelt eine virtuelle Taste basierend auf dem aktuellen Scancode und den Tastaturinformationen in ein ASCII-Zeichen um.
ToUnicode wandelt eine virtuelle Taste basierend auf dem aktuellen Scancode und den Tastaturinformationen in ein Unicode-Zeichen um
UnloadKeyboardLayout entlädt das angegebene Tastaturlayout
VkKeyScan ermittelt den virtuellen Tastencode und den Status der Umschalttaste anhand eines ASCII-Zeichens im Windows-Zeichensatz
über
3.Menüfunktion
AppendMenu fügt dem angegebenen Menü einen Menüpunkt hinzu
CheckMenuItem aktiviert oder deaktiviert den angegebenen Menüpunkt
CheckMenuRadioItem gibt an, dass ein Menüelement als „Radio“-Element überprüft wird
CreateMenu erstellt ein neues Menü
CreatePopupMenu erstellt ein leeres Popup-Menü
DeleteMenu löscht den angegebenen Menüeintrag
DestroyMenu löscht das angegebene Menü
DrawMenuBar zeichnet das Menü für das angegebene Fenster neu
EnableMenuitem ermöglicht oder deaktiviert angegebene Menüelemente
GetMenu erhält das Handle eines Menüs im Fenster
GetMenucheckmarkdimensions gibt die Größe eines Menüprüfungszeichens zurück
GetMenuconTexthelpid erhält die Hilfszene -ID eines Menüs
GetMenudefaultItem bestimmt, welches Element im Menü das Standardelement ist
GetMenuitemCount gibt die Anzahl der Elemente (Menüelemente) im Menü zurück
GetMenuitemid gibt die Menü -ID des Elements an der angegebenen Position im Menü zurück
GetMenuiteminfo erhält (empfängt) spezifische Informationen zu einem Menüelement
GetMenuitemRect lädt die Bildschirmkoordinateninformationen des angegebenen Menüelements in einem Rechteck
GetMenustate erhält Informationen zum Status des angegebenen Menüelements
GetMenustring erhält die Zeichenfolge des angegebenen Menüelements
GetubMenu erhält das Handle eines Popup-Menüs, das sich an der angegebenen Position im Menü befindet
GetSystemMenu erhält den Handle des Systemmenüs des angegebenen Fensters
Hilitemenuitem steuert den hervorgehobenen Zustand der Menüpunkte der obersten Ebene
Einfügenmenu fügt einen Menüeintrag in der angegebenen Position im Menü ein und verschieben Sie andere Einträge bei Bedarf nach unten
InsertMenuitem fügt einen neuen Menüelement ein
Ismenu bestimmt, ob das angegebene Handle ein Menügriff ist
LoadMenu lädt ein Menü aus der angegebenen Modul oder Anwendungsinstanz
LoadMenuIndirect lädt ein Menü
MenuitemFrompoint bestimmt, welcher Menüelement einen angegebenen Punkt auf dem Bildschirm enthält
ModifyMenu ändert die Menüeinträge
Removemenu entfernt den angegebenen Menüeintrag
SetMenu legt das Fenstermenü fest
SetMenucontexthelpid legt die Hilfszene -ID eines Menüs fest
SetMenudefaultItem legt ein Menüelement als Standardelement fest
SetMenuitembitMaps legt fest
SetMenuiteminfo legt die angegebenen Informationen für einen Menüelement fest
TrackpopupMenu zeigt ein Popup -Menü überall auf dem Bildschirm an
TrackpopupMuex ähnelt TrackpopupMenu, außer dass es zusätzliche Funktionen bietet
über
Im Folgenden finden Sie einige Typdefinitionen zu Menüfunktionen
Menuiteminfo Diese Struktur enthält Informationen zu Menüpunkten
Tpmparams Diese Struktur wird von der TrackpopUpMuexx -Funktion verwendet, um zusätzliche Funktionen zu unterstützen
4. Zeichnungsfunktion
AbortPath verwirft alle in der angegebenen Geräteszene ausgewählten Pfade. Storniert auch jede derzeit laufende Pfadschöpfung
Anglearc zeichnet eine Linie mit einem Verbindungsbogen
ArcDraw ein Bogen
Beginpath startet einen Pfadzweig
CancelDC storniert einen langen Zeichnungsvorgang in einem anderen Thread
Akkord ziehen einen Akkord
CloseNHmetafile schließt die angegebene erweiterte Metafile -Geräte -Szene und gibt einen Griff an die neu erstellte Metafile zurück
Schließendefinierte beim Zeichnen eines Pfades die aktuell geöffnete Figur.
CloseMetafile schließt die angegebene Metafile -Geräte -Szene und gibt einen Griff an die neu erstellte Metafile zurück
CopyEnhmetafile stellt eine Kopie (Kopie) des angegebenen erweiterten Metafiles her
Copymetafile stellt eine Kopie des angegebenen (Standard-) Metafiles her
CreateBrushIndirect erstellt einen Pinsel basierend auf einer Protokoll -Datenstruktur
ErstellteIbPatternBrush erstellt einen Pinsel mit einem Gerätsunabhängigen Bitmap, um den Pinselstil (Muster) anzugeben
CreateenHmetafile erstellt eine verbesserte Metafile -Geräte -Szene
CreateHatchbrush erstellt einen Pinsel mit einem Schattenmuster
CreateMetafile erstellt eine Metafile -Geräte -Szene
CreatePassApterBrush erstellt einen Pinsel mit einer Bitmap, die ein Pinselmuster angibt
CreatePencreates einen Pinsel mit dem angegebenen Stil, der Breite und der Farbe
CreatePenindirect erstellt einen Stift basierend auf der angegebenen Logpen -Struktur
Createsolidbrush erzeugt einen Pinsel mit einer festen Farbe
DeleteenHmetafile löscht das angegebene erweiterte Metafile
Deletemetafile löscht die angegebene Metafile
DeleteObject löscht das GDI -Objekt und alle vom Objekt verwendeten Systemressourcen werden freigegeben.
Drawedge zeichnet einen rechteckigen Rand mit dem angegebenen Stil
Die Drawescape Escape -Funktion sendet Daten direkt an den Display -Gerätetreiber
DrawfocusRect zeichnet ein Fokus -Rechteck
DrawFrameControl zeichnet eine Standardkontrolle
DrawState wendet eine Vielzahl von Effekten auf ein Bild- oder Zeichnungsvorgang an
Ellipse zeichnet eine Ellipse, die von einem bestimmten Rechteck umgeben ist
Endpath hört auf, einen Pfad zu definieren
Enumenhmetafile listet einzelne Metafilenaufzeichnungen für ein erweitertes Metafile auf.
EnummetAfile wird individuelle Metafile -Datensätze für eine Standard -Windows -Metafile aufgezählt
EnumObjects zählt die Bürsten und Pinsel auf, die mit der angegebenen Geräteszene verwendet werden können
Ausstreckten erzeugt eine verlängerte Bürste (dekorativ oder geometrisch)
ExtfloodFill füllt einen Bereich mit der derzeit ausgewählten Bürste in der angegebenen Geräteszene.
Füllpath schließt alle offenen Formen im Pfad und füllt sie mit dem aktuellen Pinsel
Fillrect füllt ein Rechteck mit der angegebenen Bürste aus
Flachterpath wandelt alle Kurven in einem Pfad in Liniensegmente um
FloodFill füllt einen Bereich in der angegebenen Geräteszene mit der aktuell ausgewählten Bürste
Framerect zeichnet einen Rand um ein Rechteck mit der angegebenen Bürste um ein Rechteck
Gdicom fügt der angegebenen erweiterten Metafile -Geräte -Szene eine Kommentarnachricht hinzu
Gdiflush führt alle anhängigen Zeichenvorgänge aus
GDigetbatchlimit bestimmt, wie viele GDI -Zeichnungsbefehle in der Warteschlange enthalten sind
GDISetBatchLimit gibt an, wie viele GDI -Zeichnungsbefehle in der Warteschlange gestellt werden können
Getarcdirection bestimmt die aktuelle Zeichnungsrichtung beim Zeichnen eines Bogens.
Getbkcolor erhält die aktuelle Hintergrundfarbe der angegebenen Gerätezene
GetBkMode erhält den aktuellen Hintergrund -Füllmodus für die angegebene Geräteszene.
GetBrushorgex bestimmt den Ausgangspunkt der aktuell ausgewählten Pinsel in der angegebenen Geräteszene
GetCurrentObject erhält das aktuell ausgewählte Objekt des angegebenen Typs
GetCurrentPositionex erhält die aktuelle Stiftposition in der angegebenen Geräte -Szene
GetenHmetafile erhält den Metafilengriff einer erweiterten Metafile, die in der Datenträgerdatei enthalten ist
GetenHmetafilebits kopiert das angegebene erweiterte Metafile in einen Speicherpuffer
Getenhmetafiledescription gibt eine Beschreibung einer erweiterten Metafile zurück
GetenHmetafileHeader bekommt den Metafile -Header der erweiterten Metafile
GetenhmetafilepaletteTries bekommt alles oder einen Teil der erweiterten Metafile -Palette
GetMetafile erhält den Metafile -Handle der Metafile in einer Festplattendatei
GetMetafileBitsex kopiert das angegebene Metafile in einen Speicherpuffer
GetMitterLimit erhält die Einstellung der Steigungsgrenze (Gehrung) der Geräteszene
GetNearestColor erhält eine feste Farbe, die der angegebenen Farbe basierend auf den Anzeigefunktionen des Geräts am nächsten liegt.
GetObjectapi erhält eine Struktur, die das angegebene Objekt beschreibt
GetObjectype bestimmt den Typ des GDI -Objekts, auf das der angegebene Handle verwiesen wird
GetPath erhält eine Reihe von Daten, die den aktuellen Pfad definieren
GetPixel erhält den RGB -Wert eines Pixels in der angegebenen Geräteszene
GetPolyFillMode erhält den Polygon -Füllmodus für die angegebene Gerätezene
GetROP2 erhält den aktuellen Zeichnungsmodus für die angegebene Gerätszene
GetStockObject erhält ein inhärentes Objekt (Aktie)
GetSyScolorbrush erhält einen Pinsel für jede Standard -Systemfarbe
GetWinmetafilebits konvertiert ein erweitertes Metafile in ein Standard -Windows -Metafile, indem Sie einen Puffer mit Daten für ein Standard -Metafile füllen
Invertrect invertiert ein bestimmtes Rechteck in der Geräteszene, indem der Wert jedes Pixels invertiert.
Linedda wird alle Punkte im angegebenen Liniensegment aufgezählt
Lineto verwendet den aktuellen Stift, um eine Linie von der aktuellen Position zu einem bestimmten Punkt zu zeichnen.