Subclassing globale

Sottoclasse globalmente una classe finestra, l'applicazione deve avere un handle a una finestra della classe. L'applicazione deve anche la maniglia per rimuovere la sottoclasse. Per ottenere l'handle, un'applicazione crea in genere una finestra nascosta della classe per essere una sottoclasse. Dopo aver ottenuto la maniglia, l'applicazione chiama la funzione SetClassLong , specificando la maniglia, la bandiera GCL_WNDPROC e l'indirizzo della procedura sottoclasse. SetClassLong restituisce l'indirizzo di una routine di finestra originale per la classe.

L'indirizzo di routine di finestra originale viene utilizzato in sottoclassi globale allo stesso modo che Ŕ usato in sottoclassi di istanza. La procedura di sottoclasse passa i messaggi per la routine di finestra originale chiamando CallWindowProc. L'applicazione rimuove la sottoclasse dalla classe finestra dal chiamante SetClassLong ancora una volta, specificando l'indirizzo di una routine di finestra originale, la bandiera GCL_WNDPROC e l'handle a una finestra della classe sta una sottoclasse. Un'applicazione che globalmente sottoclassi di una classe di controllo necessario rimuovere la sottoclasse quando l'applicazione termina; in caso contrario, pu˛ verificarsi un errore irreversibile del sistema.

Sottoclassi globale ha le stesse limitazioni come sottoclassi di istanza, oltre ad alcune restrizioni aggiuntive. Un'applicazione non dovrebbe utilizzare i byte supplementari per la classe o l'istanza di finestra senza sapere esattamente come la routine di finestra originale li utilizza. Se l'applicazione deve associare dati a una finestra, deve utilizzare la proprietÓ finestra.

Rimedio: Inserire il CD-ROM CD di MSDN Library.

Index