Funktionsreferenz

Inhaltsverzeichnis

Funktionsreferenz
CreateWindow() / CreateWindowEx()
DefWindowProc()
DestroyWindow()
DispatchMessage()
ExitProcess()
GetCommandLine()
GetLastError()
GetMessage()
GetModuleHandle()
GetVersionEx()
LoadCursor()
LoadIcon()
LoadMenu()
MessageBox()
PostQuitMessage()
RegisterClassEx()
ShowWindow()
TranslateMessage()
UpdateWindow()

In dieser Referenz werden in alphabetischer Reihenfolge die in diesem Tutorial verwendeten Funktionen beschrieben. Die Beschreibung umfasst den Zweck der Funktion, die Parameter und den Rüchgabewert sowie Angaben, ab welcher Windows-Version die Funktion verfügbar ist und in welcher Bibliothek sie enthalten ist. Aus dem Namen der Bibliothek ergibt sich der Name des Includes, in dem der Prototyp der Funktion enthalten ist.

Die Datentypen der einzelnen Parameter entsprechen den Originaldefinitionen, die sich an der Sprache C orientieren. Hinter den meisten Datentypen, egal ob Zeiger oder Zahlenwert, verbirgt sich ein einfaches Assembler-DWord. Die entsprechenden Definitionen sind i. d. R. in der Datei windows.inc enthalten, wodurch die gleichen Datentypen auch in den Assemblerquelltexten verwendet werden können.

CreateWindow() / CreateWindowEx()

Diese Funktionen erzeugen ein normales, ein Pop-Up- oder ein Kindfenster. Die Funktion übergibt die Fensterklasse, den Fenstertitel, den Fensterstil, Angaben zu Position und Größe des Fensters sowie zum Eigentümer des Fensters und zum Menü.
Die beiden Funktionen unterscheiden sich lediglich dadurch, dass CreateWindowEx() einen weiteren Parameter hat (an der ersten Stelle), über den ein erweiterter Stil an das zu erzeugende Fenster übergeben wird.

Beide Funktionen gibt es intern als ANSI- (CreateWindowExA()) und Unicode-Version (CreateWindowExW()).

Parameter von CreateWindowEx()
Parameter Bedeutung
DWORD dwExStyle Extra Stil. Der normale Fensterstil wird über dwStyle festgelegt. Der Parameter dwStyle stammt noch aus den 16-Bit-Windows-Zeiten; dwExStyle kam erst bei den 32-Bit-Versionen hinzu. Entsprechend werden mit dwExStyle Stile angegeben, die erst mit Windows 95 bzw. NT erschienen.
Wenn Sie keine Extrastile haben möchten dann muss NULL übergeben werden.
WS_EX_ACCEPTFILES
Ein Fenster mit diesem Stil akzeptiert Drag 'n Drop-Dateien
WS_EX_APPWINDOW
Wenn es sich um ein Top-Level-Fenster handelt, dann erscheint es in der Taskleiste
WS_EX_CLIENTEDGE
Der Rahmen des Fensters wird eingesunken dargestellt
WS_EX_COMPOSITED
Erst ab Windows XP. Bewirkt durch Double-Buffering, dass beim Zeichnen des Fensters kein Flackern entsteht.
Kann nicht verwendet werden, wenn einer der Stile CS_OWNDC oder CS_CLASSDC verwendet wird.
WS_EX_CONTEXTHELP
In der Titelleiste des Fensters wird ein Fragezeichen eingeblendet. Beim Klick auf dieses Fragezeichen wird der Cursor als Fragezeichen mit einem Zeiger dargestellt. Klickt der Nutzer mit diesem Cursor in ein Kindfenster, dann erhält dieses eine WM_HELP-Nachricht. Als Reaktion auf diese Nachricht wird normalerweise eine kleine Kontexthilft für das Kindfenster angezeigt (Stichworte: WinHelp() und HELP_WM_HELP).
Kann nicht mit den Stilen WS_MAXIMIZEBOX oder WS_MINIMIZEBOX verwendet werden.
WS_EX_CONTROLPARENT
Das Fenster enthält Kindfenster, die in die Navigation in der Dialogbox eingeschlossen werden sollen, zum Beispiel TAB, Pfeiltasten, Shortcuts. Die Navigation übernimmt der Dialogmanager.
WS_EX_DLGMODALFRAME
Das Fenster hat einen doppelten Rahmen. Die Erzeugung einer Titeleiste ist mit dem Stil WS_CAPTION möglich.
WS_EX_LAYERED
Ab Windows 2000/XP Erzeugt ein mehrschichtiges (layered) Fenster. Kann nicht für Kindfenster verwendet werden oder für Fenster mit den Stilen CS_OWNDC oder CS_CLASSDC.
WS_EX_LAYOUTRTL
Bei arabischen oder hebräischen Windows-Versionen ab Windows 98 wird ein Fenster erzeugt, dess horizontaler Ursprung auf der rechten Seite liegt. Steigende horizonale Werte liegen weiter links.
WS_EX_LEFT
Fensterinhalte werden generell links ausgerichtet. Der Standard.
WS_EX_LEFTSCROLLBAR
Bei Systemsprachen, die eine Anpassung der Leserichtung erlauben, wird der horizontale Scrollbalken auf der linken Seite des Client-Bereichs angezeigt. Bei anderen Sprachen wird dieser Stil ignoriert.
WS_EX_LTRREADING
Text wird in der Leserichtung Links-nach-Rechts angezeigt. Standard.
WS_EX_MDICHILD
Erzeugt ein MDI-Kindfenster
WS_EX_NOACTIVATE
Ab Windows 2000/XP. Wenn ein Nutzer ein Fenster mit diesem Stil anklickt, dann wird es nicht in den Vordergrund geholt. Um das Fenster zu aktivieren, ist ein expliziter Aufruf von SetActiveWindow() oder SetForegroundWindow() notwendig. Damit das Fenster automatisch auf der Taskleiste erscheint, muss mit WS_EX_APPWINDOW kombiniert werden.
WS_EX_NOINHERITLAYOUT
Ab Windows 2000/XP. Ein Fenster mit diesem Stil übergibt sein Layout nicht an Kindfenster.
WS_EX_NOPARENTNOTIFY
Wenn ein Fenster mit diesem Stil erzeugt oder zerstört wird, dann sendet es keine WM_PARENTNOTIFY-Nachricht an das Elternfenster.
WS_EX_OVERLAPPEDWINDOW
Kombiniert die Stile WS_EX_CLIENTEDGE und WS_EX_WINDOWEDGE.
WS_EX_PALETTEWINDOW
Kombiniert die Stile WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW und WS_EX_TOPMOST.
WS_EX_RIGHT
Fensterinhalte werden generell rechts ausgerichtet. Hat nur eine Wirkung bei Sprachen, die Leserichtungsanpassung bieten (arabisch..)
WS_EX_RIGHTSCROLLBAR
Der Vertikal Scrollbalken wird rechts angezeigt. Standard.
WS_EX_RTLREADING
Bei Sprachen mit Leserichtungsanpassung wird der Text von rechts nach links angezeigt, bei anderen Sprachen wirkungslos.
WS_EX_STATICEDGE
Erzeugt einen dreidimensionalen Rahmen um das Fenster. Ist für Elemente gedacht, die keine Nutzerinteraktion erlauben.
WS_EX_TOOLWINDOW
Erzeugt ein Tool-Window. Es handelt sich um ein kleines Fenster mit kleinem Rahmen und einem Titel in kleinerer Schrift mit Icons, eine Art Symbolleiste in einem eigenen Fenster. Das Fenster erscheint nicht in der Taskleiste.
WS_EX_TOPMOST
Das Fenster wird immer an vorderster Position auf dem Bildschirm angezeigt.
WS_EX_TRANSPARENT
Verzögert das Zeichnen des Fensters, bis darunterliegende Nachfolger gezeichnet wurden.
WS_EX_WINDOWEDGE
Das Fenster bekommt einen erhabenen Rahmen.
LPCTSTR lpClassName Adresse des ASCIIZ-Strings mit dem Namen der Fensterklasse, die für dieses Fenster verwendet werden soll. Diese Fensterklasse kann entweder eine selbst registrierte Fensterklasse oder eine von Windows vordefinierte Fensterklasse sein. Im ersten Fall muss die Fensterklasse vorher mit RegisterClassEx() registriert worden sein.
LPCTSTR lpWindowName Zeiger auf den ASCIIZ-Namen des Fensters, der auch in der Titelleiste angezeigt wird. Wird NULL angegeben, dann ist die Titelleiste leer
DWORD dwStyle Fensterstil. Hier wird für Fenster sehr oft WS_OVERLAPPEDWINDOW verwendet. Es handelt sich um eine Bitmaske. Verschiedene Stile können durch OR kombiniert werden. Die gültigen Stile richten sich nach der Fensterklasse.
int X Koordinate der linken oberen Ecke in der Horizontalen. Sollte dieser Parameter auf CW_USEDEFAULT gesetzt werden, so ermittelt Windows die Standard-X-Position und ignoriert den Parameter Y. Wird CW_USEDEFAULT für Pop-Up- oder Kindfenster verwendet, werden X und Y auf Null gesetzt.
int Y Koordinate der linken oberen Ecke in der Vertikalen. Koordinatenursprung ist die linke obere Bildschirmecke.
int nWidth Breite des Fensters. Bei CW_USEDEFAULT wird die Standardbreite durch Windows ermittelt und nHeight ignoriert; bei Pop-Up- oder Kindfenster wird stattdessen Null für nWidth und nHeight eingesetzt.
int nHeight Höhe des Fensters
HWND hWndParent Gibt das Handle zum Elternobjekt des Fensters an. Wenn kein Elternobjekt vorhanden ist, dann wird NULL verwendet. Hintergrund: wird das Elterobjekt geschlossen, dann werden durch diese Beziehung auch die Kindobjekte geschlossen
HMENU hMenu Handle zum fenstereigenen Menü. Wenn NULL angegeben wird, dann wird das Menü verwendet, das in der Fensterklasse angegeben wurde
HINSTANCE hInstance Handle des Programms das das Fenster erzeugt
LPVOID lpParam Optionaler Zeiger auf Daten, die dem Fenster in der Nachricht WM_CREATE bei dessen Erzeugung übergeben werden. Die Übergabe erfolgt dabei in einer Struktur des Typs CREATESTRUCT im Member lpCreateParams. Die Adresse einer solchen Struktur steht bei WM_CREATE in lpParam der Window-Prozedur.
Wenn ein Fenster in einer MDI-Anwendung erzeugt wird, dann muss lpParam die Adresse einer Struktur CLIENTCREATESTRUCT enthalten.
Returnwert Im Fehlerfall NULL, ansonsten das Handle auf das neu erzeugte Fenster.
Erweiterte Fehlerinformationen liefert GetLastError()
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges Diese Funktion kommt im Kapitel Fensterklassen zu intensiverer Anwendung. Dabei werden auch die durch Windows bereits definierten Fensterklasse beleuchtet.
erste Anwendung in Einführung: Ein Basisprogramm

DefWindowProc()

Windows stellt eine Standard-Fensterprozedur (Window Procedure) bereit, um die Bearbeitung aller Fensternachrichten zu gewährleisten. Diese Funktion sollte i. d. R. immer am Ende der Ereignisbehandlung in ihrer Fensterprozedur aufgerufen werden, um die nicht durch ihr Programm verarbeiteten Nachrichten abzuarbeiten.
Die Parameter stimmen mit denen ihrer Fensterprozedur überein.

Die Funktion gibt es intern als ANSI- (DefWindowProcA()) und Unicode-Version (DefWindowProcW()).

Parameter von DefWindowProc()
Parameter Bedeutung
HWND hWnd Handle zu dem Fenster, das die Nachricht empfangen hat
UINT Msg Spezifiziert die Nachricht
WPARAM wParam Zusätzliche Informationen zur Nachricht. Der Inhalt dieses Parameters hängt vom Wert von Msg ab.
LPARAM lParam Zusätzliche Informationen zur Nachricht. Der Inhalt dieses Parameters hängt vom Wert von Msg ab.
Returnwert Der Returnwert hängt von der Art der Nachricht ab. Es wird das Ergebnis der jeweiligen Nachrichtenverarbeitung geliefert.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges nichts
erste Anwendung in Einführung: Ein Basisprogramm

DestroyWindow()

Diese Funktion zerstört ein anzugebendes Fenster. Dazu werden die Nachrichten WM_DESTROY und WM_NCDESTROY an das Fenster gesendet. Die Funktion zerstört ebenfalls das Menü des Fensters, leert die Nachrichtenwarteschlange, zerstört Timer und entfernt die Eigentümerschaft an der Zwischenablage.

Parameter von DestroyWindow()
Parameter Bedeutung
HWND hWnd Handle des zu zerstörenden Fensters
Returnwert Im Fehlerfall NULL (weitere Informationen mit GetLastError()), ansonsten das Handle zum geladenen Menuü.
Zusatzinformationen
vorhanden seit Windows 95, Windows NT 3.1
in Bibliothek user32.lib
Sonstiges Es können keine Fenster zerstört werden, die nicht dem aufrufenden Thread gehören.
erste Anwendung in Menüs

DispatchMessage()

Mit dieser Funktion werden Nachrichten, die mit GetMessage aus der Nachrichtenwarteschlange entnommen wurden, an die Fensterprozedur weitergeleitet.

Die Funktion gibt es intern als ANSI- (DispatchMessageA()) und Unicode-Version (DispatchMessageW()).

Parameter von DispatchMessage()
Parameter Bedeutung
MSG *lpmsg Adresse einer Variablen des Typs MSG
Returnwert Gibt den Wert an, der von der Fensterprozedur zurückgegeben wird. Dieser Wert wird normalerweise ignoriert.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges Ein Beispielaufruf: invoke DispatchMessage,ADDR msg
erste Anwendung in Einführung: Ein Basisprogramm

ExitProcess()

Diese Funktion beendet einen Prozess und all seine Threads

Parameter von ExitProcess()
Parameter Bedeutung
UINT uExitcode Der Returncode, der an den Prozess gemeldet wird, der den durch ExitProcess() zu beendenden Prozess gestartet hat.
Returnwert keiner
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek kernel32.lib
Sonstiges Beim Beenden eines Prozesses werden alle durch den Prozess geöffneten Handles geschlossen, alle Threads abgesehen vom aufrufenden Thread stellen ihre Arbeit ein, in allen verbundenen DLLs werden die Entry- Point-Funktionen mit DLL_PROCESS_DETACH aufgerufen, der Prozess und der aufrufende Thread werden beendet, das Prozessobjekt und alle Threads des Prozesses erhalten einen signalisierten Zustand und der Beendigungsstatus des Prozesses nimmt den Wert von uExitcode an.
erste Anwendung in Einführung

GetCommandLine()

Die Funktion liefert die Kommandozeile zurück mit der der Prozess gestartet wurde.

Die Funktion wird ausführlich im Kapitel Kommandozeilenparameter beschrieben.

GetLastError()

Fehlercodes werden je Thread verwaltet. Die Funktion liefert den letzten Fehlercode des aufrufenden Threads zurück.

Parameter von GetLastError()
Parameter Bedeutung
keine keine
Returnwert Der letzte Fehlercode des aufrufenden Threads. Einige Funktionen setzen diesen Wert, obwohl sie fehlerfrei gelaufen sind. Unter Windows 95/98/Me sollte man mit GetLastError() vorsichtig sein. 16-Bit-Funktionen setzen den Fehlercode nicht und Funktionen, die den Code setzen, tun dies u. U. mit anderen Werten als unter den anderen Windows-Versionen.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek kernel32.lib
Sonstiges GetLastError() sollte sofort aufgerufen werden, wenn eine Funktion anzeigt, dass ein Fehler aufgetreten ist, da andere Funktionen den Wert vielleicht überschreiben, auch wenn sie fehlerfrei liefen.

Wenn sie selbst Fehlercodes definieren möchten, dann mit Werten, bei denen Bit 29 gesetzt ist; in den Windows-Fehlercodes ist dieses Bit nicht gesetzt.

GetMessage()

Diese Funktion entnimmt der Nachrichtenwarteschlange des aufrufenden Threads Nachrichten. Dabei wird notfalls solange gewartet, bis eine neue Nachricht in der Warteschlange vorhanden ist.

Die Funktion gibt es intern als ANSI- (GetMessageA()) und Unicode-Version (GetMessageW()).

Parameter von GetMessage()
Parameter Bedeutung
LPMSG lpMsg Adresse einer Variable des Typs MSG
HWND hWnd Handle des Fensters, dessen Nachrichten abgeholt werden sollen. Das Fenster muss dabei zum aufrufenden Thread gehören.
Der Wert NULL hat eine Sonderbedeutung: GetMessage() holt Nachrichten für alle Fenster des aufrufenden Threads sowie alle Nachrichten, die mit PostThreadMessage() an den Thread gesendet wurden.
UINT wMsgFilterMin Gibt den kleinsten Wert einer Nachricht an, ab der Nachrichten abgeholt werden sollen, z. B. WM_KEYFIRST oder WM_MOUSEFIRST.
Wenn wMsgFilterMin und wMsgFilterMax gleichzeitig den Wert 0 (Null) haben, dann erfolgt keine Filterung, es werden alle Nachrichten abeholt.
UINT wMsgFilterMax Gibt den höchsten Wert einer Nachricht an, bis zu dem Nachrichten abgeholt werden sollen, z. B. WM_KEYLAST oder WM_MOUSELAST. Wenn wMsgFilterMin und wMsgFilterMax gleichzeitig den Wert 0 (Null) haben, dann erfolgt keine Filterung, es werden alle Nachrichten abeholt.
Returnwert Im Fehlerfall (z. B. ungültiges Fensterhandle) -1.
Im Normalfall ein Wert größer als 0 (Null)
Wenn die Nachricht WM_QUIT abgeholt wird, dann genau 0 (Null)
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges Der Returnwert der Funktion wird in der Nachrichtenschleife typischerweise verwendet, um das Programmende festzustellen.
Die Nachricht WM_QUIT wird immer empfangen, egal wie wMsgFilterMin und wMsgFilterMax eingestellt sind.
erste Anwendung in Einführung: Ein Basisprogramm

GetModuleHandle()

Diese Funktion liefert ein Modulhandle für ein anzugebendes Modul, wenn es in den Adressraum des aufrufenden Prozesses gemappt wurde.

Parameter von GetModuleHandle()
Parameter Bedeutung
LPCTSTR lpModuleName Adresse eines ASCIIZ-Strings mit dem Modulnamen (.exe oder .dll). Wird keine Endung angegeben, dann wird .dll angenommen, endet der Name mit einem Punkt, wird keine Endung verwendet. Wenn der String einen Pfad enhält, dann ist er mit Backslashes anzugeben. Der Name wird nicht-case-sensitiv mit den Modulen verglichen, die derzeit in den Adressraum des Prozesses gemappt sind.
Wird NULL übergeben, dann wird ein Handle zu der Datei geliefert, die zur Erzeugung des aufrufenden Prozesses genutzt wurde.
Returnwert Im Fehlerfall wird Null geliefert (weitere Informationen mit GetLastError() ermitteln), ansonsten das Handle zum angegebenen Modul.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek kernel32.lib
Sonstiges Wenn sie mit einem anderen Parameter als NULL arbeiten möchten, wird die Verwendung der Funktion GetModuleHandleEx() empfohlen (siehe Platform SDK)
erste Anwendung in Einführung

GetVersionEx()

Die Funktion liefert erweiterte Informationen zur Windows-Version, auf der das Programm gerade läuft.

Die Funktion wird ausführlich im Kapitel Ermittlung der Windows-Version beschrieben.

LoadCursor()

Die Funktion lädt einen Cursor aus der .exe-Datei, die mit einem Instanzhandle assoziiert ist.

LoadCursor() gibt es intern in den Varianten LoadCursorA() und LoadCursorW().

Parameter von LoadCursor()
Parameter Bedeutung
HINSTANCE hInstance Instanzhandle des Modules, dessen ausführbare Datei den zu ladenden Cursor enthält.
LPCTSTR lpCursorName Adresse des ASCIIZ-Strings mit dem Namen der Ressource.

Um einen der von Windows vordefinierten Cursor zu verwenden, muss in hInstance NULL übergeben werden und in lpCursorName einer der Werte
IDC_APPSTARTING (Pfeil mit kleiner Sanduhr),
IDC_ARROW (Standardpfeil),
IDC_CROSS (feines Kreuz),
IDC_HAND (Hand), IDC_HELP (Pfeil mit Fragezeichen),
IDC_IBEAM,
IDC_ICON,
IDC_NO (durchgestrichener Kreis),
IDC_SIZE,
IDC_SIZEALL (Pfeil mit vier Spitzen nach oben, unten, rechts und links),
IDC_SIZENESW, IDC_SIZENS, IDC_SIZENWSE und IDC_SIZEWE (Pfeile mit zwei Spitzen nach Nordost/Südwest usw),
IDC_UPARROW (Pfeil nach oben) und
IDC_WAIT (Sanduhr).

Returnwert Im Fehlerfall NULL (weitere Informationen mit GetLastError()), ansonsten das Handle zum geladenen Cursor.
Zusatzinformationen
vorhanden seit Windows 95, Windows NT 3.1
in Bibliothek user32.lib
Sonstiges Der Cursor wird nur geladen, wenn er nicht schon geladen wurde. Ansonsten wird das Handle der schon existierenden Ressource verwendet.
erste Anwendung in Einführung

LoadIcon()

Die Funktion lädt ein Icon aus der .exe-Datei, die mit einem Instanzhandle assoziiert ist.

LoadIcon() gibt es intern in den Varianten LoadIconA() und LoadIconW().

Parameter von LoadIcon()
Parameter Bedeutung
HINSTANCE hInstance Instanzhandle des Modules, dessen ausführbare Datei das zu ladende Icon enthält.
LPCTSTR lpIconName Adresse des ASCIIZ-Strings mit dem Namen der Ressource.

Um eines der von Windows vordefinierten Icons zu verwenden, muss in hInstance NULL übergeben werden und in lpIconName einer der Werte
IDI_APPLICATION (Standard),
IDI_ASTERISK / IDI_INFORMATION
IDI_ERROR / IDI_HAND (Icon in Handform)
IDI_EXCLAMATION / IDI_WARNING (Ausrufezeichen)
IDI_QUESTION (Fragezeichen)
IDI_WINLOGO (unter XP: Standardicon).

Returnwert Im Fehlerfall NULL (weitere Informationen mit GetLastError()), ansonsten das Handle zum geladenen Cursor.
Zusatzinformationen
vorhanden seit Windows 95, Windows NT 3.1
in Bibliothek user32.lib
Sonstiges Das Icon wird nur geladen, wenn er nicht schon geladen wurde. Ansonsten wird das Handle der schon existierenden Ressource verwendet.

LoadIcon() kann nur Icons laden, deren Größe mit den Systemwerten SM_CXICON und SM_CYICON übereinstimmt. Für andere Ausmaße muss die Funktion LoadImage() (siehe Platform SDK) verwendet werden.

erste Anwendung in Einführung

LoadMenu()

Diese Funktion lädt eine Menüressource aus der .exe-Datei, die mit einem Instanzhandle assoziiert ist.

LoadMenu() gibt es intern in den Varianten LoadIconA() und LoadIconW().

Parameter von LoadMenu()
Parameter Bedeutung
HINSTANCE hInstance Instanzhandle des Modules, dessen ausführbare Datei das zu ladende Icon enthält.
LPCTSTR lpMenuName Adresse des ASCIIZ-Strings mit dem Namen der Ressource.
Returnwert Im Fehlerfall NULL (weitere Informationen mit GetLastError()), ansonsten das Handle zum geladenen Menuü.
Zusatzinformationen
vorhanden seit Windows 95, Windows NT 3.1
in Bibliothek user32.lib
Sonstiges Der durch die Ressource belegte Speicher wird bei Beendigung des Programms automatisch freigegeben.

LoadIcon() kann nur Icons laden, deren Größe mit den Systemwerten SM_CXICON und SM_CYICON übereinstimmt. Für andere Ausmaße muss die Funktion LoadImage() (siehe Platform SDK) verwendet werden.

erste Anwendung in Menüs

MessageBox()

Diese Funktion erzeugt und verwaltet ein Meldungsfenster. Die Applikation kann den Titel, den Text sowie die Kombination von Icons und Schaltflächen definieren, um die Formatierung zur Darstellung auf dem Bildschirm kümmert sich die Funktion selbst.

Intern gibt es nur die Funktionen MessageBoxA() (ANSI) und MessageBoxW() (Unicode). Per EQU-Direktive in windows.inc wird MessageBox() auf die entsprechende Funktion umgesetzt.

Parameter von MessageBox()
Parameter Bedeutung
HWND hWnd Handle des Elternfensters. Wenn dieses nicht vorhanden ist, dann NULL
LPCTSTR lpText Zeiger auf den eigentlichen Meldungstext als ASCIIZ-String. Es sind die aus C bekannten Formatierer erlaubt wie \n und \t. Der String muss passend zur Funktion ein ANSI- oder Unicodestring sein.
LPCTSTR lpCaption Zeiger auf den ASCIIZ-String für den Meldungsfenstertitel. Wird statt einer Adresse NULL verwendet, dann wird automatisch "Fehler" als Titel angezeigt. Der String muss passend zur Funktion ein ANSI- oder Unicodestring sein.
UINT uType Dieser Parameter definiert, welche Schaltflächen und welches Icon in der Messagebox angezeigt werden. Beide Stilarten können miteinander oder-verknüpft werden.
MB_ABORTRETRYIGNORE
erzeugt die Buttons Abbrechen, Wiederholen, Ignorieren
MB_CANCELTRYCONTINUE
erzeugt die Buttons Abbrechen, Wiederholen, Fortsetzen; (ab Windows 2000, wird als Ersatz für MB_ABORTRETRYIGNORE empfohlen)
MB_HELP
fügt den angezeigten Buttons noch einen Hilfe-Button hinzu. Wird dieser geklickt, sendet die Messagebox die Nachricht WM_HELP an das Elternfenster.
MB_OK
erzeugt einen OK-Button
MB_OKCANCEL
erzeugt die Buttons OK und Abbrechen
MB_RETRYCANCEL
erzeugt die Buttons Wiederholen und Abbrechen
MB_YESNO
erzeugt die Buttons Ja und Nein
MB_YESNOCANCEL
erzeugt die Buttons Ja, Nein und Abbrechen

Mit folgenden Stilen wird ein Icon in der Messagebox angezeigt
MB_ICONEXCLAMATION
erzeugt ein Ausrufezeichen-Icon
MB_ICONWARNING
erzeugt ein Ausrufezeichen-Icon
MB_ICONINFORMATION
erzeugt ein Icon das ein kleines i in einem Kreis anzeigt
MB_ICONASTERISK
erzeugt ein Icon das ein kleines i in einem Kreis anzeigt
MB_ICONQUESTION
erzeugt ein Fragezeichen-Icon; Microsoft rät von MB_ICONQUESTION ab, u. U. der Typ der Messagebox für den Anwender nicht klar erkennbar ist, da die Nachricht als Hilfe-Information verstanden werden kann.
MB_ICONSTOP
erzeugt ein Stop-Icon
MB_ICONERROR
erzeugt ein Stop-Icon
MB_ICONHAND
erzeugt ein Stop-Icon

Um die Standard-Schaltfläche zu markieren, können sie einen der Stile MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3, MB_DEFBUTTON4 verwenden, wobei MB_DEFBUTTON1 der Standard ist, wenn keiner der anderen drei Stile angegeben wurde.

Das Modalitätsverhalten bestimmen sie mit MB_APPLMODAL (Standard; der Nutzer muss die Dialogbox beantworten, um in dem durch hWnd angegebenen Fenster weiterarbeiten zu können), MB_SYSTEMMODAL (wie MB_APPLMODAL, aber die Dialogbox hat den Stil WS_EX_TOPMOST; zu anderen Fenstern als hWnd kann gewechselt werden) und MB_TASKMODAL (wie MB_APPLMODAL, aber der Wechsel zu anderen Fenstern des gleichen Threads ist nicht möglich, wenn hWnd den Wert NULL hat).

MB_RIGHT richtet den Meldungstext rechts aus, MB_RTLREADING stellt den Text von rechts nach links auf hebräischen oder arabischen Systemen dar. MB_SETFOREGROUND stellt die Nachricht in den Vordergrund, mit MB_TOPMOST wird die Dialogbox mit dem Stil WS_EX_TOPMOST erzeugt.

Für MB_DEFAULT_DESKTOP_ONLY, MB_SERVICE_NOTIFICATION und MB_SERVICE_NOTIFICATION_NT3X verweise ich auf das Platform-SDK.

Returnwert Im Fehlerfall liefert die Funktion Null zurück; für erweiterte Fehlerinformationen rufen sie GetLastError() auf.

Anderenfalls zeigt der Returnwert den gedrückten Button an, wobei die Rückgabewerte von der Art der Messagebox abhängen. Die Beschreibung orientiert sich am Typ der Messagebox.

IDABORT
Abort-Button wurde gedrückt
IDCANCEL
Cancel-Button wurde gedrückt
IDCONTINUE
Fortfahren-Button wurde gedrückt
IDIGNORE
Ignorieren-Button wurde gedrückt
IDNO
Nein-Button wurde gedrückt
IDOK
OK-Button wurde gedrückt
IDRETRY
Retry-Button wurde gedrückt
IDTRYAGAIN
Try-Again-Button wurde gedrückt
IDYES
Ja-Button wurde gedrückt
Zusatzinformationen
vorhanden seit Windows 95, Windows NT 3.1
in Bibliothek user32.lib
Sonstiges Wird innerhalb eines Dialoges eine Messagebox angezeigt, dann ist das Handle des Dialogs als Parameter hWnd zu übergeben
erste Anwendung in Einführung

PostQuitMessage()

Diese Funktion weist das System darauf hin, dass ein Thread den Przess terminieren möchte. Die Funktion wird normalerweise als Reaktion auf die Nachricht WM_DESTROY aufgerufen und stellt dann selbst die Nachricht WM_QUIT in die Nachrichtenwarteschlange, woraufhin dann die Nachrichtenschleife verlassen werden sollte.

Parameter von PostQuitMessage()
Parameter Bedeutung
int nExitCode Gibt den Exit-Code an, der an das aufrufende Programm geliefert wird. Dieser Exit-Code wird als Parameter wParam der Nachricht WM_QUIT übergeben.
Returnwert keiner
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges nichts
erste Anwendung in Einführung: Ein Basisprogramm

RegisterClassEx()

Diese Funktion registriert eine Fensterklasse für die spätere Verwendung in Aufrufen von CreateWindowEx()

Die Funktion gibt es intern als ANSI- (RegisterClassExA()) und Unicode-Version (RegisterClassExW()).

Parameter von RegisterClassEx()
Parameter Bedeutung
WNDCLASSEX *lpwcx Zeiger auf eine gefüllte Struktur des Typs WNDCLASSEX
Returnwert Im Fehlerfall wird Null zurückgeliefert, weitere Informationen liefert ein Aufruf von GetLastError()
Ansonsten wird ein sogenanntes Atom, das praktische eine einmalige ID für die Fensterklasse darstellt und nur von wenigen Funktionen verwendet wird.
Der Returnwert kann in vielen Fällen ignoriert werden.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges Diese Funktion ist der Nachfolger von RegisterClass(), die eine Struktur des Typs WNDLCASS erwartet.

Abhängig davon ob diese Funktion in der ANSI- oder Unicode-Version aufgerufen wird, teilt die Anwendung dem System mit, ob Nachrichten mit Text- oder Zeichenparametern als ANSI oder Unicode erwartet werden.

Vom Programm registrierte Fensterklassen werden bei Beendigung des Programms automtisch deregistriert. Unter Windows 95/98/Me gilt dies auch, wenn Fensterklassen durch eine DLL registriert wurden und diese DLL entladen wird; unter Windows NT/2000/XP muss eine solcherart registrierte Fensterklasse explizit deregistriert werden.

erste Anwendung in Einführung: Ein Basisprogramm

Hier die Beschreibung der Struktur WNDCLASSEX.

Die WNDCLASSEX-Struktur
Name Bedeutung
cbSize Die Größe der WNDCLASSEX-Struktur
style Stil der Fenster; Stile können mit or kombiniert werden
lpfnWndProc Adresse der Callback-Prozedur des Fensters
cbClsExtra Gibt eine extra zu reservierende Menge Speicher an, die an die Struktur angehängt wird. Die Bytes werden mit Null initialisiert
cbWndExtra Gibt eine extra zu reservierende Menge Speicher an, die an die Fensterinstanz angehängt wird. Initialisierung wieder mit Null
hInstance Instanzhandle des Moduls mit der Callback-Prozedur
hIcon Handle des Icons
hCursor Handle des Cursors
hbrBackground Farbe des Fensterhintergrundes
lpszMenuName Adresse der Zeichenkette mit dem Menünamen; oder NULL
lpszClassName Zeiger auf die Zeichenkette die den Namen der Fensterklasse beinhaltet
hIconSm Handle auf ein Icon in kleiner Form. Wenn NULL, dann versucht Windows, für das in hIcon angegebene Icon die kleine Form zu finden

ShowWindow()

Diese Funktion setzt den Anzeigestatus eines bestimmten Fensters.

Parameter von ShowWindow()
Parameter Bedeutung
HWND hWnd Handle des anzuzeigenden Fensters
int nCmdShow Gibt den Anzeigestatus an
SW_FORCEMINIMIZE
Windows 2000/XP; minimiert das Fenster, selbst wenn der Thread, der das Fenster besitzt nicht reagiert. Sollte nur für Fenster von anderen Threads verwendet werden.
SW_HIDE
Versteckt das Fenster und aktiviert ein anderes.
SW_MAXIMIZE
Maximiert das angegebene Fenster
SW_MINIMIZE
Minimiert das angegebene Fenster und aktiviert das nächste Top-Level-Fenster der Z-Reihenfolge.
SW_RESTORE
Aktiviert das Fenster und zeigt es an. Wenn es maximiert oder minimiert war wird es in seiner Originalgröße an seiner Originalposition angezeigt. Sollte zum Wiederherstellen minimierter Fenster verwendet werden.
SW_SHOW
Aktiviert das Fenster und zeigt es an.
SW_SHOWDEFAULT
Zeigt das Fenster so an, wie es durch das Programm, das die Applikation gestartet hat, in der STARTUPINFO-Struktur an CreateProcess() übergeben wurde.
SW_SHOWMAXIMIZED
Aktiviert das Fenster und maximiert es.
SW_SHOWMINIMIZED
Aktiviert das Fenster und minimiert es.
SW_SHOWMINNOACTIVE
Zeigt das Fenster minimiert an. Stimmt im wesentlichen mit SW_SHOWMINIMIZED überein, aktiviert das Fenster aber nicht.
SW_SHOWNA
Stimmt im wesentlichen mit SW_SHOW überein, aktiviert das Fenster aber nicht.
SW_SHOWNOACTIVATE
Stimmt im wesentlichen mit SW_SHOWNORMAL überein, aktiviert das Fenster aber nicht.
SW_SHOWNORMAL
Aktiviert das Fenster und zeigt es an. Wenn es maximiert oder minimiert war wird es in seiner Originalgröße an seiner Originalposition angezeigt. Sollte verwendet werden, wenn das Fenster zum ersten Mal angezeigt wird.
Returnwert Wenn das Fenster vor dem Funktionsaufruf sichtbar war, dann ein Wert verschieden von Null, ansonsten Null.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges Diese Funktion ist eine der wenigen, die unter Windows 95 als Unicode-Version implementiert wurde.
erste Anwendung in Einführung: Ein Basisprogramm

TranslateMessage()

Diese Funktion übersetzt die Tastendrücke auf virtuelle Tasten in Zeichennachrichten und stellt diese in die Nachrichtenwarteschlange des Threads. Bei einem der nächsten Aufrufe von GetMessage() wird dann diese Zeichennachricht gelesen.

Parameter von TranslateMessage()
Parameter Bedeutung
MSG *lpMsg Zeiger auf eine Variable des Typs MSG.
Returnwert Wenn eine Nachricht übersetzt wurde, dann ein Wert verschieden von Null.
Ist eine der Nachrichten WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, oder WM_SYSKEYUP, ist der Returnwert verschieden von Null, unabhängig von irgendwelchen Übersetzungen.
Ist keine Übersetzung erfolgt, wird Null zurückgeliefert.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges TranslateMessage() verändert nicht die Nachricht, die lpMsg darstellt.
erste Anwendung in Einführung: Ein Basisprogramm

UpdateWindow()

Diese Funktion aktualisiert den Clientbereich eines anzugebenden Fensters, indem eine WM_PAINT-Nachricht an das Fenster gesendet wird. Sollte der Clientbereich leer sein, wird keine Nachricht gesendet.

Parameter von UpdateWindow()
Parameter Bedeutung
HWND hWnd Handle des Fensters, das geupdated werden soll.
Returnwert Im Fehlerfall wird Null geliefert, weitere Informationen können in der Windows NT-Familie mit GetLastError() ermittelt werden. Ansonsten ein Wert ungleich Null.
Zusatzinformationen
vorhanden seit Windows 95
in Bibliothek user32.lib
Sonstiges Die Nachricht WM_PAINT wird direkt an die Fensterprozedur gesendet, sie wird nicht in die Nachrichtenwarteschlange eingereiht.
erste Anwendung in Einführung: Ein Basisprogramm