Поделиться через


код уведомления PSN_WIZBACK

Уведомляет страницу о том, что пользователь нажал кнопку Назад в мастере. Этот код уведомления отправляется в виде сообщения WM_NOTIFY .

PSN_WIZBACK 

    lppsn = (LPPSHNOTIFY) lParam; 

Параметры

lParam

Указатель на структуру PSHNOTIFY , содержащую сведения о коде уведомления. Эта структура содержит структуру NMHDR в качестве первого члена hdr. Элемент hwndFrom этой структуры NMHDR содержит дескриптор страницы свойств. Элемент lParam структуры PSHNOTIFY не содержит никаких сведений.

Возвращаемое значение

Возвращает значение 0, чтобы разрешить мастеру перейти на предыдущую страницу. Возвращает значение -1, чтобы мастер не изменял страницы. Чтобы отобразить определенную страницу, верните идентификатор ресурса диалогового окна. Если диалоговое окно было указано с флагом PSP_DLGINDIRECT , это уведомление возвращает указатель на шаблон диалога.

Комментарии

Чтобы задать возвращаемое значение, процедура диалогового окна для страницы должна вызвать функцию SetWindowLong со значением DWL_MSGRESULT и вернуть значение TRUE. Пример:

case PSN_WIZBACK :
    SetWindowLong(hDlg, DWL_MSGRESULT, 0);
    break;

case PSN_WIZNEXT :
    ...

Примечание

Лист свойств находится в процессе управления списком страниц при отправке кода уведомления PSN_WIZBACK. Вы можете добавлять, вставлять или удалять страницы в ответ на эти коды уведомлений, но при вставке или удалении страниц перед текущей страницей необходимо соблюдать особую осторожность.

При вставке или удалении страниц перед текущей страницей необходимо вернуть (через DWL_MSGRESULT) ненулевое значение, чтобы указать нужную новую страницу. Однако обратите внимание, что при вставке или удалении страницы, расположенной перед текущей страницей (индекс меньше текущей страницы), PSN_KILLACTIVE могут быть отправлены на неправильную страницу.

По этой причине рекомендуется, чтобы мастера, которые динамически добавляли и удаляли страницы в ответ на PSN_WIZNEXT и PSN_WIZBACK делать это только для страниц в конце списка. Если вы хотите, чтобы мастер точно удалял страницы, оставьте динамические страницы в конце списка и вернитесь к постоянным страницам перед их удалением.

Например, предположим, что мастер состоит из вводной страницы, ряда динамических страниц и страниц завершения, и вы хотите удалить динамические страницы, когда пользователь достигнет страницы завершения.

  1. Мастер будет начинаться с двух страниц: "Введение" и "Завершение". Пользователь начинается со страницы "Введение".
    1. Введение (пользователь здесь)
    2. Completion
  2. Когда пользователь переходит из раздела "Введение", мастер добавляет динамические страницы и помещает пользователя на первую динамическую страницу, возвращая (через DWL_MSGRESULT) идентификатор диалогового окна страницы "Dynamic 1". В этом примере есть три динамические страницы.
    1. Введение
    2. Completion
    3. Dynamic 1 (Пользователь здесь)
    4. Dynamic 2
    5. Dynamic 3
  3. После перехода пользователя по динамическим страницам в "Dynamic 3" и перехода на следующую страницу приложение должно поместить пользователя на страницу "Завершение". Опять же, это делается путем возврата (через DWL_MSGRESULT) идентификатора диалогового окна страницы "Завершение".
    1. Введение
    2. Завершение (пользователь здесь)
    3. Динамический 1
    4. Dynamic 2
    5. Dynamic 3
  4. Затем приложение может безопасно удалить три динамические страницы (нумеруемые от трех до пяти).
    1. Введение
    2. Завершение (пользователь здесь)

Обратите внимание, что этот метод необходим, только если мастер динамически удаляет страницы. Если мастер добавляет страницы только динамически, этот процесс не требуется.

Требования

Требование Значение
Минимальная версия клиента
Windows Vista [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Заголовок
Prsht.h