PSN_APPLY通知代码
发送到属性表中的每个页面,以指示用户已单击“确定”、“关闭”或“应用”按钮,并希望所有更改生效。 此通知代码以 WM_NOTIFY 消息的形式发送。
PSN_APPLY
lppsn = (LPPSHNOTIFY) lParam;
参数
-
lParam
-
指向 PSHNOTIFY 结构的指针,该结构包含有关通知代码的信息,包括页面 ID。
返回值
设置PSNRET_NOERROR以指示对此页面所做的更改有效且已应用。 如果PSNRET_NOERROR设置的所有页面,则可以销毁属性表。 若要指示对此页所做的更改无效并防止属性表被销毁,请设置以下返回值之一:
- PSNRET_INVALID。 属性表不会被销毁,焦点将返回到此页面。
- PSNRET_INVALID_NOCHANGEPAGE。 属性表不会被销毁,当按下按钮时,焦点将返回到具有焦点的页面。
若要设置返回值,页面的对话框过程必须使用DWL_MSGRESULT值调用 SetWindowLong 函数,并且对话框过程必须返回 TRUE。
备注
当用户单击“确定”、“应用”或“关闭”按钮时,属性表会向活动页面发送 PSN_KILLACTIVE 通知,使其有机会验证用户的更改。 如果更改有效,则属性表会向每个页面发送PSN_APPLY通知代码,并指示其将新属性应用于相应的项。
注意
发送PSN_APPLY通知代码时,属性表正在操作页面列表。 处理此通知时,请勿尝试添加、删除或插入页面。 这样做会产生不可预知的结果。
如果用户单击“确定”按钮,则 lParam 指向的PSHNOTIFY 结构的 lParam 成员设置为 TRUE。 如果已发送PSM_CANCELTOCLOSE消息,并且用户单击“关闭”按钮,则它还设置为 TRUE。 如果用户单击“应用”按钮,则会将其设置为 FALSE 。
PSHNOTIFY 结构包含 NMHDR 结构作为其第一个成员 hdr。此 NMHDR 结构的 hwndFrom 成员包含属性表的句柄。
处理此通知代码时,请勿调用 EndDialog 函数。
如果用户单击“确定”按钮,并且每个页面都返回PSNRET_NOERROR值以响应 PSN_APPLY,则模式属性表将被销毁。 如果任何页面返回PSNRET_INVALID或PSNRET_INVALID_NOCHANGEPAGE,应用过程将立即取消。 取消页面后面的页面不会收到PSN_APPLY通知代码。
若要接收此通知代码,页面必须将DWL_MSGRESULT值设置为 FALSE 以响应 PSN_KILLACTIVE 通知代码。
注意
使用 Aero 向导样式 (PSH_AEROWIZARD ) 时,不支持此通知代码。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2003 [仅限桌面应用] |
标头 |
|