SetWindowLong

La funzione SetWindowLong cambia un attributo della finestra specificata. La funzione imposta anche un valore a 32 bit (lungo) all'offset specificato nella memoria di una finestra supplementare finestra.

LONG SetWindowLong ( HWND  hWnd, / / handle di finestraintnIndex, / / offset di valore per impostareLungadwNewLong / / nuovo valore);
 

Parametri

hWnd
Gestire la finestra e, indirettamente, la classe a cui appartiene la finestra.
nIndex
Specifica l'offset in base zero al valore da impostare. I valori validi sono nella gamma zero attraverso il numero di byte di memoria finestra supplementare, meno 4; ad esempio, se è stato specificato 12 o più byte di memoria aggiuntiva, un valore di 8 sarebbe un indice per il terzo integer a 32 bit. Per impostare qualsiasi altro valore, specificare uno dei seguenti valori:
Valore Azione
GWL_EXSTYLE Imposta una nuova finestra stile esteso.
GWL_STYLE Imposta un nuovo stile di finestra.
GWL_WNDPROC Imposta un nuovo indirizzo per la routine della finestra.
GWL_HINSTANCE Imposta un nuovo handle di istanza di applicazione.
GWL_ID Imposta un nuovo identificatore della finestra.
GWL_USERDATA Imposta il valore a 32-bit associato alla finestra. Ogni finestra ha un valore corrispondente a 32-bit destinato all'uso dall'applicazione che ha creato la finestra.

I valori seguenti sono disponibili anche quando il parametro hWnd identifica una finestra di dialogo:
Valore Azione
DWL_DLGPROC Imposta il nuovo indirizzo della procedura di dialogo casella.
DWL_MSGRESULT Imposta il valore restituito di un messaggio elaborato nella procedura di dialogo casella.
DWL_USER Imposta nuove informazioni aggiuntive che sono private all'applicazione, quali maniglie o puntatori.

dwNewLong
Specifica il valore di sostituzione.

Valori restituiti

Se la funzione ha esito positivo, il valore restituito è il precedente valore integer a 32 bit specificato.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni di errore estese, chiamare GetLastError.

Se il precedente valore integer a 32 bit specificato è zero, e la funzione ha esito positivo, il valore restituito è pari a zero, ma la funzione non cancella le ultime informazioni sull'errore. Questo rende difficile determinare il successo o il fallimento. Per affrontare questo, si dovrebbe chiaro le ultime informazioni sull'errore chiamando SetLastError(0) prima di chiamare SetWindowLong. Poi, fallimento della funzione sono contrassegnata da un valore restituito di zero e un risultato GetLastError che è diverso da zero.

Osservazioni

La funzione SetWindowLong non riesce se la finestra specificata dal parametro hWnd non appartiene al processo stesso thread chiamante.

Alcuni dati della finestra viene memorizzato nella cache, quindi le modifiche effettuate utilizzando SetWindowLong non avrà effetto finché non si chiama la funzione SetWindowPos.

Se si utilizza il SetWindowLong con l'indice GWL_WNDPROC per sostituire la routine della finestra, la routine della finestra deve essere conformi alle linee guida specificate nella descrizione della funzione di callback WindowProc.

Se si utilizza SetWindowLong con l'indice DWL_MSGRESULT per impostare il valore restituito per un messaggio elaborato da una routine di finestra di dialogo, deve restituire TRUE direttamente in seguito. In caso contrario, se si chiama qualsiasi funzione che i risultati nella tua procedura di dialogo ricevendo una finestra di messaggio, il messaggio della finestra nidificato potrebbe sovrascrivere il valore restituito che è impostare utilizzando DWL_MSGRESULT.

SetWindowLong la chiamata con l'indice GWL_WNDPROC crea una sottoclasse della classe finestra utilizzata per creare la finestra. Un'applicazione può sottoclasse una classe di sistema, ma dovrebbe non sottoclasse creata una classe di finestra da un altro processo. La funzione SetWindowLong crea la sottoclasse finestra modificando la routine di finestra associata una classe particolare finestra, causando il sistema chiamare la nuova procedura di finestra invece di quello precedente. Un'applicazione deve passare eventuali messaggi non elaborati dalla nuova procedura di finestra precedente routine di finestra chiamando CallWindowProc. Ciò consente all'applicazione di creare una catena di procedure di finestra.

Riserva di memoria supplementare finestra specificando un valore diverso da zero nel membro cbWndExtra della struttura WNDCLASSEX utilizzata con la funzione RegisterClassEx.

Non è necessario chiamare SetWindowLong con l'indice GWL_HWNDPARENT per modificare l'elemento padre di una finestra figlio. Al contrario, utilizzare la funzione SetParent.

Windows CE: Il parametro nIndex deve essere un multiplo di 4 byte.

Accesso non allineato non è supportato.

Non sono supportati i seguenti valori di parametro nIndex:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

Le versioni di Windows CE 2.0 e versioni successive supportano il valore DWL_DLGPROC nel parametro nIndex , mentre Windows CE 1.0 non.

Descrizione

nbsp; Windows &NT: richiede 3.1 o versione successiva.
Windows:Richiede Windows 95 o versioni successive.
Windows CE:Richiede la versione 1.0 o successiva.
Intestazione:Dichiarati in winuser.
Importare librerie:Utilizzare user32.lib.
Unicode:Implementato come versioni Unicode e ANSI su Windows NT.

Vedi anche

Finestra panoramica di classi, funzioni di classe Window, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX

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

Index