code de notification PSN_WIZNEXT
Avertit une page que l’utilisateur a cliqué sur le bouton Suivant dans un Assistant. Ce code de notification est envoyé sous la forme d’un message WM_NOTIFY .
PSN_WIZNEXT
lppsn = (LPPSHNOTIFY) lParam;
Paramètres
-
lParam
-
Pointeur vers une structure PSHNOTIFY qui contient des informations sur le code de notification. Cette structure contient une structure NMHDR en tant que premier membre, hdr. Le membre hwndFrom de cette structure NMHDR contient le handle de la feuille de propriétés. Le membre lParam de la structure PSHNOTIFY ne contient aucune information.
Valeur retournée
Retournez 0 pour permettre à l’Assistant d’accéder à la page suivante. Retournez -1 pour empêcher l’Assistant de modifier les pages. Pour afficher une page particulière, retournez son identificateur de ressource de boîte de dialogue. Si le dialogue a été spécifié avec l’indicateur PSP_DLGINDIRECT , cette notification retourne le pointeur vers le modèle de dialogue.
Notes
Pour définir la valeur de retour, la procédure de boîte de dialogue de la page doit appeler la fonction SetWindowLong avec la valeur DWL_MSGRESULT et retourner TRUE. Par exemple :
case PSN_WIZNEXT :
SetWindowLong(hDlg, DWL_MSGRESULT, 0);
break;
case PSN_WIZBACK :
...
Notes
La feuille de propriétés est en cours de manipulation de la liste des pages lorsque le code de notification PSN_WIZNEXT est envoyé. Vous pouvez ajouter, insérer ou supprimer des pages en réponse à ces codes de notification, mais une attention particulière doit être prise si vous insérez ou supprimez des pages avant la page active.
Si vous insérez ou supprimez des pages avant la page active, vous devez retourner (via DWL_MSGRESULT) une valeur différente de zéro pour spécifier la nouvelle page souhaitée. Notez, toutefois, que si vous insérez ou supprimez une page située avant la page active (qui a un index plus petit que la page active), PSN_KILLACTIVE peut être envoyé à la page incorrecte.
Pour cette raison, il est recommandé que les Assistants qui ajoutent et suppriment dynamiquement des pages en réponse à PSN_WIZNEXT et PSN_WIZBACK le fassent uniquement aux pages à la fin de la liste. Si vous souhaitez que votre Assistant supprime les pages avec précision, conservez les pages dynamiques à la fin de la liste et revenez aux pages permanentes avant de les supprimer.
Par exemple, supposons qu’un Assistant se compose d’une page d’introduction, d’une série de pages dynamiques et d’une page d’achèvement, et que vous souhaitiez supprimer les pages dynamiques lorsque l’utilisateur atteint la page d’achèvement.
- L’Assistant commence par deux pages, « Introduction » et « Achèvement ». L’utilisateur commence sur la page « Introduction ».
- Introduction (L’utilisateur est ici)
- Completion
- Lorsque l’utilisateur quitte « Introduction », l’Assistant ajoute les pages dynamiques et place l’utilisateur à la première page dynamique en retournant (via DWL_MSGRESULT) l’identificateur de boîte de dialogue de la page « Dynamic 1 ». Dans cet exemple, il existe trois pages dynamiques.
- Introduction
- Completion
- Dynamic 1 (l’utilisateur est ici)
- Dynamique 2
- Dynamique 3
- Une fois que l’utilisateur a parcouru les pages dynamiques jusqu’à « Dynamic 3 », puis a accédé à la page suivante, l’application doit placer l’utilisateur sur la page « Achèvement ». Là encore, cette opération est effectuée en retournant (via DWL_MSGRESULT) l’identificateur de boîte de dialogue de la page « Achèvement ».
- Introduction
- Saisie semi-automatique (l’utilisateur est ici)
- Dynamique 1
- Dynamique 2
- Dynamique 3
- L’application peut ensuite supprimer les trois pages dynamiques (numérotées de trois à cinq) en toute sécurité.
- Introduction
- Saisie semi-automatique (l’utilisateur est ici)
Notez que cette technique n’est nécessaire que si votre Assistant supprime des pages de manière dynamique. Si votre Assistant ajoute uniquement des pages de manière dynamique, ce processus n’est pas nécessaire.
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2003 [applications de bureau uniquement] |
En-tête |
|