Sottoclasse caselle combinate

Subclassing è una procedura che consente a un'applicazione di processo e intercetta i messaggi inviati o inviato a una finestra. Tramite la creazione di sottoclassi, un'applicazione può sostituire la propria elaborazione per determinati messaggi, pur lasciando elaborazione routine di finestra classe definita la maggior parte dei messaggi.

Quando il sistema operativo crea una finestra, Salva informazioni su di esso in una struttura di dati interne che include l'indirizzo di una routine di finestra. Sottoclasse di una finestra, un'applicazione chiama la funzione SetClassLong per sostituire l'indirizzo di tale procedimento con l'indirizzo di istanza di una procedura definita dall'applicazione sottoclasse. Successivamente, la finestra di tutti i messaggi vengono inviati alla procedura sottoclasse. Questa procedura utilizza quindi la funzione CallWindowProc per passare i messaggi non trasformati originale routine di finestra. Per una descrizione dell'elaborazione del messaggio eseguito dalla classe COMBOBOX finestra procedure, vedere Default Combo Box comportamento.

Quando la casella combinata è di fuori di una finestra di dialogo, un'applicazione non può elaborare la scheda, immettere e fuggire tasti a meno che non utilizza una routine di sottoclasse. Quando una casella combinata semplice o discesa riceve lo stato attivo per l'input, immediatamente imposta lo stato attivo per il controllo di modifica del bambino. Di conseguenza, un'applicazione deve sottoclasse il controllo di modifica per intercettare l'input della tastiera per una casella combinata semplice o menu a discesa. Per un esempio di questo, vedere creazione di una casella combinata una sottoclasse.

Se una procedura sottoclasse elabora il messaggio WM_PAINT , è necessario utilizzare il BeginPaint funzione per preparare per la pittura. Prima di chiamare il EndPaint funzione, passa l'handle di contesto di periferica (DC) come parametro wParam per la routine della finestra. Se EndPaint viene chiamato per primo, la routine di finestra di classe non fa nessun dipinto perché EndPaint convalida l'intera finestra.

Una tecnica relative al sottoclassi è creazione di superclassi. Una superclasse assomiglia a qualsiasi altra classe, salvo che la routine della finestra non chiama DefWindowProc per gestire i messaggi non trasformati. Invece, passa non trasformati messaggi alla procedura di finestra per la classe della finestra padre. Seguire le linee guida in Window procedure per evitare i problemi che possono verificarsi con la creazione di sottoclassi e creazione di superclassi.

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

Index