Globale Subclassing

Global Unterklasse eine Fensterklasse muss die Anwendung einen Handle für ein Fenster der Klasse sein. Die Anwendung benötigt auch das Handle für die Unterklasse zu entfernen. Um das Handle zu erhalten, erstellt eine Anwendung in der Regel ein ausgeblendetes Fenster der Klasse als Unterklasse definiert werden. Nach dem Abrufen des Handles, ruft die Anwendung die SetClassLong -Funktion, die das Handle, das GCL_WNDPROC-Flag und die Adresse der Unterklasse-Prozedur angeben. SetClassLong gibt die Adresse des die ursprüngliche Fensterprozedur für die Klasse.

Die ursprünglichen Fenster Prozeduradresse wird in global Unterklassen auf die gleiche Weise verwendet, die es in Unterklassen der Instanz verwendet wird. Die Unterklasse-Prozedur leitet Nachrichten an die ursprüngliche Fensterprozedur durch Aufrufen von CallWindowProc. Die Anwendung entfernt die Unterklasse von Window-Klasse durch Aufrufen SetClassLong wieder, Angabe der Adresse die ursprüngliche Fensterprozedur, das GCL_WNDPROC-Flag und das Handle für ein Fenster der Klasse wird in Unterklassen unterteilt. Eine Anwendung, die Global Unterklassen eine Steuerelementklasse die Unterklasse entfernen muss, wenn die Anwendung beendet wird; Andernfalls kann ein nicht behebbarer Systemfehler auftreten.

Globale Unterklassen hat die gleichen Einschränkungen wie Instanz Unterklassen, plus einige zusätzlichen Einschränkungen. Eine Anwendung sollte nicht die extra-Bytes für die Klasse oder die Fenster-Instanz verwenden, ohne zu wissen genau, wie sie die ursprüngliche Fensterprozedur verwendet. Wenn die Anwendung ein Fenster Daten zuordnen muss, sollten sie Fenstereigenschaften verwenden.

Index