Share via


PSN_WIZNEXT通知程式碼

通知頁面使用者已按一下精靈中的 [ 下一步 ] 按鈕。 此通知代碼會以 WM_NOTIFY 訊息的形式傳送。

PSN_WIZNEXT 

    lppsn = (LPPSHNOTIFY) lParam; 

參數

lParam

PSHNOTIFY結構的指標,其中包含通知程式碼的相關資訊。 這個結構包含NMHDR結構做為其第一個成員hdr。這個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 傳回 (,) 非零值來指定所需的新頁面。 不過請注意,如果您插入或移除位於目前頁面之前的頁面, (索引小於目前頁面) , PSN_KILLACTIVE 可能會傳送到錯誤的頁面。

基於這個理由,建議精靈動態新增和移除頁面,以回應PSN_WIZNEXT和 PSN_WIZBACK 只在清單結尾的頁面。 如果您想要讓精靈正確地移除頁面,請將動態頁面保留在清單結尾,並跳回永久頁面,然後再刪除頁面。

例如,假設精靈是由簡介頁面、一系列動態頁面和完成頁面所組成,而且您想要在使用者到達完成頁面時刪除動態頁面。

  1. 精靈會以兩個頁面開頭:「簡介」和「完成」。使用者會在 [簡介] 頁面上開始。
    1. (使用者簡介)
    2. Completion
  2. 當使用者離開 [簡介] 時,精靈會新增動態頁面,並將使用者放在第一個動態頁面,方法是透過DWL_MSGRESULT傳回 (DWL_MSGRESULT ,) 頁面 「Dynamic 1」 的對話方塊識別碼。在此範例中,有三個動態頁面。
    1. 簡介
    2. Completion
    3. Dynamic 1 (User 在這裡)
    4. 動態 2
    5. 動態 3
  3. 當使用者流覽動態頁面至 「Dynamic 3」,然後流覽至下一頁之後,應用程式應該將使用者放在頁面「完成」。同樣地,透過 DWL_MSGRESULT) 頁面 「完成」的對話方塊識別碼傳回 (,即可完成此動作。
    1. 簡介
    2. 完成 (使用者在這裡)
    3. 動態 1
    4. 動態 2
    5. 動態 3
  4. 然後,應用程式就可以安全地移除三個動態頁面, (編號為三到五個) 。
    1. 簡介
    2. 完成 (使用者在這裡)

請注意,只有在精靈動態移除頁面時,才需要這項技術。 如果您的精靈只會動態新增頁面,則不需要此程式。

規格需求

需求
最低支援的用戶端
Windows Vista [僅限傳統型應用程式]
最低支援的伺服器
Windows Server 2003 [僅限傳統型應用程式]
標頭
Prsht.h