&xcenter;
.
Es kann nur eine offene Ansicht pro &xcenter; geben, so daá eine
&xcenter;-Instanz identisch mit einer offenen &xcenter;-Ansicht ist. Es kann aber
mehrere &xcenter;-Instanzen auf dem System geben (d.h. eine pro Bildschirmrand).
Obwohl das &xcenter; selbst ein Objekt auf der Arbeitsoberfl„che ist, isoliert es die Widgets komplett von der WPS-Umgebung. Deshalb ben”tigt man kein Wissen zur SOM/WPS-Programmierung, um eine neue Widget-Klasse zu schreiben, kann aber trotzdem WPS-Programmierung benutzen.
Noch einmal zur Verdeutlichung: Ein Widget ist ein separates PM-Fenster innerhalb des &xcenter;s.
XCENTERWIDGETCLASS
).
Diese Struktur beinhaltet den Namen der PM-Fensterklasse, die vom &xcenter;
benutzt wird, um die PM-Fenster der Widgets zu erzeugen. Je nach Attributen der
Widget-Klasse kann es eine oder mehrere Instanzen der Widget-Klasse geben. Wenn
Sie ein anderes Widget im &xcenter; haben wollen, mssen Sie eine Widget-Klasse
schreiben.
Eine Widget-Klasse zu schreiben, ist nahezu dasselbe, wie eine PM-Fensterklasse zu schreiben, mit ein paar zus„tzlichen Regeln. Um dies etwas einfacher zu machen, k”nnen sich mehrere Widget-Klassen eine PM-Klasse teilen.
Einige Widget-Klassen sind im &xcenter; selbst eingebaut (d.h. sie befinden
sich in der Datei XFLDR.DLL
), aber das &xcenter; kann
ebenfalls externe Plug-In-DLLs laden. Mehrere der Widget-Klassen, die mit &xwp;
geliefert werden, wurden als Plug-Ins angelegt, um Ihnen zu zeigen, wie es funktioniert.
Wenn Sie den &xwp;-Quellcode haben, schauen Sie
dazu im Verzeichnis src\widgets
nach.
Der PM organisiert die Fenster in Klassen. Wenn Sie z.B. einen Druckknopf mit dem
PM erzeugen, rufen Sie WinCreateWindow
mit dem Namen der Klasse fr
Druckkn”pfe (WC_BUTTON
) auf, die eine standardm„áige Fensterklasse auf
jedem &os2;-System ist.
Es ist aber auch m”glich, neue Fensterklassen zu erzeugen. Das &xcenter; nutzt diese M”glichkeit, um die Widget-Klassen zu implementieren. Deshalb ist wiederum eine Widget-Klasse eine PM-Fensterklasse mit einigen wenigen zus„tzlichen Daten, um dem &xcenter; mehr Informationen ber die Widgets zu geben, die man mit dieser Klasse erzeugen kann.
Der Vorteil einer separaten PM-Fensterklasse ist, daá ein Widget im wesentlichen frei ist zu tun, was es will. Es kann genausogut "Hello world" schreiben wie auch ein halbes Dutzend eigene Threads erzeugen und Videos abspielen.
Der Nachteil ist, daá es ein biáchen komplizierter ist, eine PM-Fensterklasse von Grund auf zu schreiben, als nur standardm„áige Kontrollen zu benutzen. Aber es gibt ja etliche Beispiele, von denen man lernen kann.
Wenn ein Widget erzeugt wird (entweder weil es zu einem offenen &xcenter;
hinzugefgt wird, oder wenn ein &xcenter; das erste Mal ge”ffnet wird und deshalb
alle Widgets erzeugt werden mssen), ruft es WinCreateWindow
mit
dem Namen der PM-Fensterklasse auf, die mit der Widget-Klasse angegeben wurde. Es
ist also nichts auáergew”hnliches.
plugins\xcenter
des &xwp;-Installationsverzeichnisses
befindet. Diese muá eine oder mehrere Widget-Klassen enthalten. Es gibt drei
Prozeduren, die eine Widget-Plug-In-DLL exportieren muá, damit das &xcenter;
die Widget-Klassen sehen kann. Diese werden im Detail auf den n„chsten Seiten
erkl„rt.