PSN_WIZBACK codice di notifica
Notifica a una pagina che l'utente ha fatto clic sul pulsante Indietro in una procedura guidata. Questo codice di notifica viene inviato sotto forma di messaggio di WM_NOTIFY .
PSN_WIZBACK
lppsn = (LPPSHNOTIFY) lParam;
Parametri
-
lParam
-
Puntatore a una struttura PSHNOTIFY che contiene informazioni sul codice di notifica. Questa struttura contiene una struttura NMHDR come primo membro , hdr. Il membro hwndFrom di questa struttura NMHDR contiene l'handle nella finestra delle proprietà. Il membro lParam della struttura PSHNOTIFY non contiene informazioni.
Valore restituito
Restituisce 0 per consentire alla procedura guidata di passare alla pagina precedente. Restituisce -1 per impedire alla procedura guidata di modificare le pagine. Per visualizzare una determinata pagina, restituisce l'identificatore della risorsa della finestra di dialogo. Se la finestra di dialogo è stata specificata con il flag PSP_DLGINDIRECT , questa notifica restituisce il puntatore al modello di finestra di dialogo.
Commenti
Per impostare il valore restituito, la procedura della finestra di dialogo per la pagina deve chiamare la funzione SetWindowLong con il valore DWL_MSGRESULT e restituire TRUE. Ad esempio:
case PSN_WIZBACK :
SetWindowLong(hDlg, DWL_MSGRESULT, 0);
break;
case PSN_WIZNEXT :
...
Nota
La finestra delle proprietà è in fase di modifica dell'elenco di pagine quando viene inviato il codice di notifica PSN_WIZBACK. È possibile aggiungere, inserire o rimuovere pagine in risposta a questi codici di notifica, ma è necessario prestare particolare attenzione se si inseriscono o rimuovono pagine prima della pagina corrente.
Se si inseriscono o si rimuovono pagine prima della pagina corrente, è necessario restituire (tramite DWL_MSGRESULT) un valore diverso da zero per specificare la nuova pagina desiderata. Si noti, tuttavia, che se si inserisce o si rimuove una pagina che si trova prima della pagina corrente (con un indice più piccolo della pagina corrente), PSN_KILLACTIVE potrebbe essere inviata alla pagina errata.
Per questo motivo, è consigliabile che le procedure guidate che aggiungono e rimuovono pagine in modo dinamico in risposta a PSN_WIZNEXT e PSN_WIZBACK farlo solo alle pagine alla fine dell'elenco. Se si desidera che la procedura guidata rimuovono le pagine in modo accurato, mantenere le pagine dinamiche alla fine dell'elenco e tornare alle pagine permanenti prima di eliminarle.
Si supponga, ad esempio, che una procedura guidata sia costituita da una pagina introduttiva, una serie di pagine dinamiche e una pagina di completamento e si desidera eliminare le pagine dinamiche quando l'utente raggiunge la pagina di completamento.
- La procedura guidata inizierà con due pagine, "Introduzione" e "Completamento". L'utente inizia nella pagina "Introduzione".
- Introduzione (l'utente è qui)
- Completion
- Quando l'utente si allontana da "Introduzione", la procedura guidata aggiunge le pagine dinamiche e inserisce l'utente nella prima pagina dinamica restituendo (tramite DWL_MSGRESULT) l'identificatore della finestra di dialogo della pagina "Dinamica 1". In questo esempio sono presenti tre pagine dinamiche.
- Introduzione
- Completion
- Dinamico 1 (l'utente è qui)
- Dinamico 2
- Dinamico 3
- Dopo che l'utente passa attraverso le pagine dinamiche a "Dynamic 3" e quindi passa alla pagina successiva, l'applicazione deve posizionare l'utente nella pagina "Completamento". Anche in questo caso, viene restituito (tramite DWL_MSGRESULT) l'identificatore del dialogo della pagina "Completamento".
- Introduzione
- Completamento (l'utente è qui)
- Dinamico 1
- Dinamico 2
- Dinamico 3
- L'applicazione può quindi rimuovere in modo sicuro le tre pagine dinamiche (numerate da tre a cinque).
- Introduzione
- Completamento (l'utente è qui)
Si noti che questa tecnica è necessaria solo se la procedura guidata rimuove le pagine in modo dinamico. Se la procedura guidata aggiunge solo pagine in modo dinamico, questo processo non è necessario.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista [solo app desktop] |
Server minimo supportato |
Windows Server 2003 [solo app desktop] |
Intestazione |
|