Computer & Technik

Betriebssysteme

Windows

Fensterklasse

Anschließend erfolgt das Registrieren der Fensterklasse, was unbe­dingt gelingen muß. Kann die Klasse nicht regi­striert werden, muß das Pro­gramm abgebrochen werden!

Handelt es sich um die zweite oder weitere Instanz ist das Regi­strieren - wie gesagt - nicht mehr nötigt. Dann er­folgt sofort das Erzeugen des Anwendungsfenster. Auch dies geschieht meistens mit Standardwerten. Nach dem Erzeu­gen muß es angezeigt und gezeichnet werden. Die notwendigen Aufrufe lauten:

1. CreateWindow()
2. ShowWindow()
3. UpdateWindow()

Anschließend fällt das Programm in die Hauptschleife, die erst beim Beenden des Programms verlassen wird.

 

Soviel zur Grundstruktur eines WINDOWS-Programms. Jetzt folgen die Feinheiten - und die beginnen bei der Fensterfunktion. Nachdem beim Registrieren der Fensterklasse ein Zeiger auf eine Funktion übergeben wurde, sendet WINDOWS alle Nachrichten an eben diese Funktion. Die Parameter sind standardisiert und typisch für alle Funktionen, die von WINDOWS direkt aufgerufen werden.

FensterFunktion(Window   : HWnd;
                Message,
                wParam   : WORD;
                lParam   : LongInt) : LongInt; export;

In <Window> wird die Handle des betroffenen Fensters übergeben und in <Message> steht die aktuelle Meldung. Diese ist ein WORD-Wert, der anhand von Konstanten in einer CASE-Schleife ausgewertet wird. In <wParam> stehen weitere Informationen, die die Meldung näher spezifizieren. Dem gleichen Zweck dient auch <lParam>. Beiden Pa­rametern ist gemein, daß sie nicht immer benötigt werden.

Der Rumpf einer Fenster-Funktion sieht demzufolge so aus:

FensterFunktion(Window, Message, wParam, lParam)
BEGIN
  FensterFunktion := 0;
  CASE Message OF
    wm_Command : BEGIN
                   CASE wParam OF

                   END;
                 END;
    
    wm_Destroy : BEGIN
                   PostQuitMessage(0);
                   EXIT;
                 END;          
  END;
END;

 

Die beiden genannten Meldungen sind in jeder WINDOWS-Applikation zu finden. wm_Destroy wird immer dann generiert, wenn das Programm beendet werden soll, während über wm_Command alle Ereignisse lau­fen, die über das Menü ausgelöst wurden. In wParam steht dann je­weils der Identifier des jeweiligen Menüpunktes.

Alle anderen Meldungen werden analog behandelt. Unser Beispiel­programm ASCII behandelt beispielsweise noch die Meldungen:

wm_paint     - Fensterinhalt neu aufbauen
wm_size      - Fenstergröße wurde verändert
wm_HScrll    - horizontales Scrollen
wm_VScroll   - vertikales Scrollen

Interessant ist dabei, daß bei den Scroll-Meldungen völlig unerheb­lich ist, ob sie durch die Tastatur oder die Maus ausgelöst wur­den. Es kommt lediglich eine der folgenden Meldungen:

((  hier irgendwo Abbildung aus Petzold-Buch 3.9 unterbringen ))

SB_LINEDOWN         - Zeile nach unten/rechts
SB_LINEUP           - Zeile nach oben/links
SB_PAGEDOWN         - Seite nach unten/rechts
SB_PAGEUP           - Seite nach oben/links
SB_THUMTRACK        - Bildlaufleistenfeld wurde bewegt
SB_THUMBPOSITION    - Bildlaufleistenfeld auf neuer Position

Insbesondere SB_THUMBTRACK ist eine unangenehme Meldung, denn sie kann maschinengewehratrig auf das Programm eintrommeln. Wird je­desmal eine PAINT-Aktion ausgelöst, muß diese Routine extrem schnell sein, ansonsten bremst das Bildschirmupdate den Bildlauf.

Horizontales und vertikales Scrollen erzeugt im übrigen die gleichen Werte in wParam.





Sachgebiet


© 2009-2012 by Alojado Publishing. Alle Rechte vorbehalten. Ausgewiesene Marken gehören ihren jeweiligen Eigentümern.
Mit der Benutzung dieser Seite erkennen Sie die Nutzungsbedingungen und die Datenschutzerklärung an. Der Betreiber übernimmt keine Haftung für den Inhalt verlinkter externer Internetseiten.
Seite erzeugt 2012-05-20 02:07:26 von textarchiv.alojado.de