PSN_WIZNEXT通知コード
ユーザーがウィザードの [次へ ] ボタンをクリックしたことをページに通知します。 この通知コードは、 WM_NOTIFY メッセージの形式で送信されます。
PSN_WIZNEXT
lppsn = (LPPSHNOTIFY) lParam;
パラメーター
-
lParam
-
通知コードに関する情報を含む PSHNOTIFY 構造体へのポインター。 この構造体には、最初のメンバーである hdr として NMHDR 構造体が含まれています。この NMHDR 構造体の hwndFrom メンバーには、プロパティ シートへのハンドルが含まれています。 PSHNOTIFY 構造体の lParam メンバーには情報が含まれていません。
戻り値
ウィザードを次のページに移動できるようにするには、0 を返します。 ウィザードでページが変更されないようにするには、-1 を返します。 特定のページを表示するには、ダイアログ リソース識別子を返します。 ダイアログが PSP_DLGINDIRECT フラグで指定されている場合、この通知はダイアログ テンプレートへのポインターを返します。
解説
戻り値を設定するには、ページのダイアログ ボックス プロシージャで、DWL_MSGRESULT値を使用して SetWindowLong 関数を呼び出し、TRUE を返す必要があります。 次に例を示します。
case PSN_WIZNEXT :
SetWindowLong(hDlg, DWL_MSGRESULT, 0);
break;
case PSN_WIZBACK :
...
注意
プロパティ シートは、PSN_WIZNEXT通知コードが送信されるときに、ページの一覧を操作する処理中です。 これらの通知コードに応じてページを追加、挿入、または削除できますが、現在のページの前にページを挿入または削除する場合は、特別な注意が必要です。
現在のページの前にページを挿入または削除する場合は、必要な新しいページを指定するには、 (DWL_MSGRESULTを通じて) 0 以外の値を返す必要があります。 ただし、現在のページの前にあるページ (現在のページよりも小さいインデックスを持つページ) を挿入または削除すると、 PSN_KILLACTIVE が間違ったページに送信される可能性があることに注意してください。
このため、ウィザードでは、PSN_WIZNEXTに応じてページを動的に追加および削除し、 リスト の末尾にあるページにのみPSN_WIZBACKすることをお勧めします。 ウィザードでページを正確に削除する場合は、動的ページをリストの末尾に保持し、永続的なページに戻ってから削除します。
たとえば、ウィザードが入門ページ、一連の動的ページ、完了ページで構成され、ユーザーが完了ページに到達したときに動的ページを削除するとします。
- ウィザードは、"概要" と "完了" の 2 つのページで始まります。ユーザーは [概要] ページから開始します。
- 概要 (ユーザーはこちら)
- Completion
- ユーザーが "概要" から移動すると、ウィザードは動的ページを追加し、ページ "Dynamic 1" のダイアログ識別子を ( DWL_MSGRESULTを介して) 返すことによって、ユーザーを最初の動的ページに配置します。この例では、3 つの動的ページがあります。
- はじめに
- Completion
- 動的 1 (ユーザーはこちら)
- 動的 2
- 動的 3
- ユーザーが動的ページを "Dynamic 3" に移動し、次のページに移動すると、アプリケーションはユーザーを "完了" ページに配置する必要があります。ここでも、これはページ "Completion" のダイアログ識別子を ( DWL_MSGRESULT経由で) 返すことによって行われます。
- はじめに
- 完了 (ユーザーはこちら)
- 動的 1
- 動的 2
- 動的 3
- その後、アプリケーションは 3 つの動的ページ (3 から 5 の番号が付いたページ) を安全に削除できます。
- はじめに
- 完了 (ユーザーはこちら)
この手法は、ウィザードがページを動的に削除する場合にのみ必要であることに注意してください。 ウィザードでページを動的に追加するだけの場合、このプロセスは必要ありません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリのみ] |
ヘッダー |
|