Lire en anglais

Partager via


code de notification PSN_WIZBACK

Avertit une page que l’utilisateur a cliqué sur le bouton Précédent dans un Assistant. Ce code de notification est envoyé sous la forme d’un message WM_NOTIFY .

PSN_WIZBACK 

    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

Retourne 0 pour permettre à l’Assistant d’accéder à la page précédente. Retourne -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 boîte 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_WIZBACK :
    SetWindowLong(hDlg, DWL_MSGRESULT, 0);
    break;

case PSN_WIZNEXT :
    ...

Notes

La feuille de propriétés est en cours de manipulation de la liste des pages lorsque le code de notification PSN_WIZBACK 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 qui se trouve avant la page active (qui a un index plus petit que la page active), PSN_KILLACTIVE peut être envoyé à la mauvaise page.

Pour cette raison, il est recommandé que les Assistants qui ajoutent et suppriment des pages dynamiquement 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 des 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 souhaitez supprimer les pages dynamiques lorsque l’utilisateur atteint la page d’achèvement.

  1. L’Assistant commence par deux pages, « Introduction » et « Achèvement ». L’utilisateur commence dans la page « Introduction ».
    1. Introduction (L’utilisateur est ici)
    2. Completion
  2. Lorsque l’utilisateur quitte « Introduction », l’Assistant ajoute les pages dynamiques et place l’utilisateur sur 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.
    1. Introduction
    2. Completion
    3. Dynamique 1 (L’utilisateur est ici)
    4. Dynamique 2
    5. Dynamique 3
  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, vous retournez (via DWL_MSGRESULT) l’identificateur de boîte de dialogue de la page « Achèvement ».
    1. Introduction
    2. Saisie semi-automatique (L’utilisateur est ici)
    3. Dynamique 1
    4. Dynamique 2
    5. Dynamique 3
  4. L’application peut ensuite supprimer les trois pages dynamiques (numérotées de trois à cinq) en toute sécurité.
    1. Introduction
    2. Saisie semi-automatique (L’utilisateur est ici)

Notez que cette technique n’est nécessaire que si votre Assistant supprime des pages dynamiquement. Si votre Assistant ajoute uniquement des pages dynamiquement, ce processus n’est pas nécessaire.

Configuration requise

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
Prsht.h