Betriebstechnik | Biographien | Biologie | Chemie | Deutsch | Digitaltechnik |
Electronica | Epochen | Fertigungstechnik | Gemeinschaftskunde | Geographie | Geschichte |
Informatik | Kultur | Kunst | Literatur | Management | Mathematik |
Medizin | Nachrichtentechnik | Philosophie | Physik | Politik | Projekt |
Psychologie | Recht | Sonstige | Sport | Technik | Wirtschaftskunde |
Ähnliche Berichte:
|
Projekte:
|
Papers in anderen sprachen:
|
informatik referate |
Prinzipieller Aufbau eines Windows-Programms in C
1. Hauptfunktion
Die Hauptfunktion ist das Grundgerüst des Windows-Programms.
int PASCAL WinMain (HANDLE hInst,HANDLE hPrevInst,LPSTR lpCmdLine,int nCmdShow)
Dem Hauptfenster wird ein Handle des Hauptfensters und des vorherigen Fensters übergeben. Mit dem hPrevInst-Parameter kann überprüft werden ob das Programm das erste Mal gestartet wurde. Eine Ausnahme bildet Win32. Hier ist der hPrevInst-Parameter immer NULL.
1.1 Fenster registrieren
if (!hPrevInst) // Registrieren
Beim der Fensterregistrierung wird die Fensterklasse in Windows registriert, also die Informationen über das Hauptfenster eingetragen. Die Menüs, Icons und Cursor werden aus der Resourcendatei mittels der ID's eingetragen.
1.2 Fenster erzeugen und anzeigen
hWnd
= CreateWindow ( szApplName,
// Fenster-Klassen-Name
szWinTitle,
// Fenster-Titel
WS_OVERLAPPEDWINDOW, //
Fenster-Stil
CW_USEDEFAULT,
0, // x,
y Standard-Pos.
CW_USEDEFAULT,
0, //
cx,cy Standard-Größe
NULL,
NULL,
// kein Vater, kein Menü
hInst,
NULL
// Ersteller, kein WM-C.P
);
if
(!hWnd)
return 2; // Fehler beim Fenster-
// Erzeugen if
ShowWindow
(hWnd, nCmdShow);
UpdateWindow
(hWnd);
Beim Erzeugen des Fensters wird dann das Fenster bereits erzeugt aber noch nicht angezeigt. Mit ShowWindow wird das durch den Handle identifizierte Fenster angezeigt während mit UpdateWindow ein WM_PAINT ausgelöst wird, welches den Fenster-Inhalt anzeigt.
1.3 Meldungsschleife
while (GetMessage (&msg, 0, 0, 0))
Der TranslateMessage-Befehl wandelt einen Befehl so um, daß er beim nächsten GetMessage ausgelesen werden kann. Der GetMessage liest dann den umgewandelten Befehl ein und gibt bei der Nachricht WM_QUIT den Wert NULL zurück. DispatchMessage schickt den eingelesenen Befehl dann an die entsprechende Fensterfunktion. Die Export-Funktionen (WndProc und DlgProc) an die die Nachrichten weitergeleitet werden, werden in der DEF-Datei eingetragen.
2. Fensterfunktionen
2.1 Hauptfenster
LONG
FAR PASCAL _export WndProc(HWND hWnd, UINT msg, WPARAM wPar, LPARAM lPar)
return 0;
}
Die
Hauptfenster-Funktion wird immer dann aufgerufen, wenn GetMessage eine
Windows-Nachricht erhält. Der Parameter msg gibt die Art der Meldung an,
während die beiden Parameter wPar und lPar weitere Informationen über die
Nachricht enthalten.
2.2 Dialogfenster
BOOL
FAR PASCAL _export DlgProc(HWND hWnd, UINT msg, WPARAM wPar, LPARAM lPar)
return ret;
}
Die Dialogfenster-Funktion funktioniert wie die Hauptfenster-Funktion. Wenn ein Dialog angelegt worden ist, werden die Nachrichten vom Hauptprogramm an diese Funktion weitergeleitet, auf die dann dort entsprechend reagiert werden kann.
3. Dialoge erzeugen
Dialoge sind eigene Fenster die einen Windows-Handle erhalten. Das Aussehen der Dialoge wird durch die Resourcen-Datei bestimmt. Im Resourcen-Headerfile, welches im Hauptprogramm eingebunden wird, werden außerdem die Dialogelemente mit ID's identifiziert.
void
WndProcWMLBUTTONDOWN (HWND hWnd)
In diesem Beispiel wird der Dialog beim Klicken der Linken Maustaste angelegt. Dazu muss zuerst eine Instanz auf die Dialogfenster-Funktion angelegt werden. Das betrifft aber nur die 16Bit-Windows-Version, da im Win32 auf die Funktion direkt zugegriffen werden kann. Die Funktion DialogBox erzeugt dann das Fenster welches als Parameter den Handle des Hauptfensters, die Resourcen-ID des Dialogs, der Handle des Erzeugers des Fensters (in diesem Fall ebenfalls das Hauptfenster) und die Instanz der Fensterfunktion. Die Kontrolle an das Hauptfenster wird hier erst wieder zurückgegeben, wenn der Dialog geschlossen wird (modaler Dialog).
4. Meldungen
In Windows-Programmen wird hauptsächlich mit Meldungen gearbeitet. Wie schon erwähnt werden die Meldungen an die jeweiligen Fensterfunktionen geschickt. Da auch Dialogfenster genauso Fenster sind wie das Hauptfenster gibt es diesselben Nachrichten. Hier einige der wichtigsten Windows-Meldungen.
WM_PAINT:
Wird
bei jeder Anderung des jeweiligen Fensters aufgerufen. Hier werden die
grafischen Ausgaben im Fenster festgelegt.
WM_LBUTTONDOWN,
WM_RBUTTONDOWN,..:
Wird
bei Maustastendruck ausgelöst.
WM_DESTROY:
Wird
ausgelöst wenn das Fenster geschlossen wird.
WM_CLOSE:
Im
Prinzip wie WM_DESTROY, nur daß bei WM_CLOSE nur die Anweisung daß das Fenster
geschlossen werden soll geschickt wird. Mit dieser Nachricht kann auch
verhindert werden daß das Fenster normal geschlossen wird.
WM_INITDIALOG:
Wird
ausgelöst, wenn ein Dialog neu erstellt wurde. Dient für Initialisierungen.
WM_COMMAND:
Ist
die Meldung, daß ein Command-Button gedrückt wurde. Im wPar-Parameter ist die
Resourcen-ID des Buttons festgehalten.
Die
Meldungen müssen nicht unbedingt vom Programm ausgelöst werden, es ist auch
möglich die Meldungen mittels PostMessage selbst zu schicken. Bsp.:PostMessage
(hWnd, WM_CLOSE, 0, 0);
Es
wird an das Fenster ein WM_CLOSE geschickt, welches dann beim nächsten
GetMessage darauf reagiert.
Referate über:
|
Datenschutz |
Copyright ©
2024 - Alle Rechte vorbehalten AZreferate.com |
Verwenden sie diese referate ihre eigene arbeit zu schaffen. Kopieren oder herunterladen nicht einfach diese # Hauptseite # Kontact / Impressum |