код уведомления PSN_WIZNEXT
Уведомляет страницу о том, что пользователь нажал кнопку Далее в мастере. Этот код уведомления отправляется в виде сообщения WM_NOTIFY .
PSN_WIZNEXT
lppsn = (LPPSHNOTIFY) lParam;
Параметры
-
lParam
-
Указатель на структуру PSHNOTIFY , содержащую сведения о коде уведомления. Эта структура содержит структуру NMHDR в качестве первого члена hdr. Элемент hwndFrom этой структуры NMHDR содержит дескриптор страницы свойств. Элемент lParam структуры PSHNOTIFY не содержит никаких сведений.
Возвращаемое значение
Верните значение 0, чтобы разрешить мастеру перейти на следующую страницу. Возвращает значение -1, чтобы запретить мастеру изменять страницы. Чтобы отобразить определенную страницу, верните идентификатор ресурса диалогового окна. Если диалоговое окно было указано с флагом PSP_DLGINDIRECT , это уведомление возвращает указатель на шаблон диалога.
Комментарии
Чтобы задать возвращаемое значение, процедура диалогового окна для страницы должна вызвать функцию SetWindowLong со значением DWL_MSGRESULT и вернуть значение TRUE. Пример:
case PSN_WIZNEXT :
SetWindowLong(hDlg, DWL_MSGRESULT, 0);
break;
case PSN_WIZBACK :
...
Примечание
Лист свойств находится в процессе управления списком страниц при отправке кода уведомления PSN_WIZNEXT. Вы можете добавлять, вставлять или удалять страницы в ответ на эти коды уведомлений, но при вставке или удалении страниц перед текущей страницей необходимо соблюдать особую осторожность.
При вставке или удалении страниц перед текущей страницей необходимо вернуть (через DWL_MSGRESULT) ненулевое значение, чтобы указать нужную новую страницу. Однако обратите внимание, что при вставке или удалении страницы, расположенной перед текущей страницей (индекс меньше текущей страницы), PSN_KILLACTIVE могут быть отправлены на неправильную страницу.
По этой причине рекомендуется, чтобы мастера, которые динамически добавляли и удаляли страницы в ответ на PSN_WIZNEXT и PSN_WIZBACK делать это только на страницах в конце списка. Если вы хотите, чтобы мастер точно удалял страницы, оставьте динамические страницы в конце списка и вернитесь к постоянным страницам перед их удалением.
Например, предположим, что мастер состоит из вводной страницы, ряда динамических страниц и страниц завершения, и вы хотите удалить динамические страницы, когда пользователь достигнет страницы завершения.
- Мастер будет начинаться с двух страниц: "Введение" и "Завершение". Пользователь начинается со страницы "Введение".
- Введение (пользователь здесь)
- Completion
- Когда пользователь переходит из раздела "Введение", мастер добавляет динамические страницы и помещает пользователя на первую динамическую страницу, возвращая (через DWL_MSGRESULT) идентификатор диалогового окна страницы "Dynamic 1". В этом примере есть три динамические страницы.
- Введение
- Completion
- Dynamic 1 (Пользователь здесь)
- Dynamic 2
- Dynamic 3
- После перехода пользователя по динамическим страницам в "Dynamic 3" и перехода на следующую страницу приложение должно поместить пользователя на страницу "Завершение". Опять же, это делается путем возврата (через DWL_MSGRESULT) идентификатора диалогового окна страницы "Завершение".
- Введение
- Завершение (пользователь здесь)
- Динамический 1
- Dynamic 2
- Dynamic 3
- Затем приложение может безопасно удалить три динамические страницы (нумеруемые от трех до пяти).
- Введение
- Завершение (пользователь здесь)
Обратите внимание, что этот метод необходим, только если мастер динамически удаляет страницы. Если мастер добавляет страницы только динамически, этот процесс не требуется.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista [только классические приложения] |
Минимальная версия сервера |
Windows Server 2003 [только классические приложения] |
Заголовок |
|