一个PageSetupHook挂接过程是与页面设置公用对话框一起使用的应用程序定义或库定义的回调过程。挂钩过程接收默认对话框过程的消息或通知。
UINT APIENTRY PageSetupHook(
HWND 【hdlg】, | //对话框窗口的句柄 |
UINT 【uiMsg】, | //消息标识符fr |
WPARAM 【wParam中】, | // message参数 |
LPARAM 【lParam的】 | // message参数 |
); |
参数
【hdlg】
处理该消息所针对的页面设置对话框窗口。
【uiMsg】
标识正在接收的消息。
【wParam中】
指定有关该消息的附加信息。具体含义取决于【uiMsg】参数的值。
【lParam的】
指定有关该消息的附加信息。具体含义取决于【uiMsg】参数的值。
如果【uiMsg】参数指示WM_INITDIALOG消息,【lParam的】是指向PAGESETUPDLG结构的指针,其中包含创建公共对话框时指定的值。
返回值
如果挂钩过程返回零,则默认对话框过程将处理该消息。
如果挂钩过程返回非零值,则默认对话框过程将忽略该消息。
备注
当您使用PageSetupDlg功能创建“页面设置”公共对话框时,可以提供PageSetupHook挂接过程来处理针对该对话框过程的消息或通知。要启用挂钩过程,请使用传递给对话框创建功能的PAGESETUPDLG结构。在lpfnPageSetupHook成员中指定挂钩过程的指针,并在旗成员中指定PSD_ENABLEPAGESETUPHOOK标志。
默认对话框过程在将其传递给挂钩过程之前处理WM_INITDIALOG消息。对于所有其他消息,挂钩过程首先接收消息。然后,挂钩过程的返回值确定默认对话程序是否处理消息或忽略它。
如果挂钩过程处理WM_CTLCOLORDLG消息,它必须返回一个有效的画笔句柄来绘制对话框的背景。一般来说,如果钩子程序处理任何WM_CTLCOLOR *消息,它必须返回一个有效的画笔句柄来绘制指定控件的背景。
不要从挂钩过程调用EndDialog函数。相反,挂钩过程可以调用PostMessage函数将具有IDABORT值的WM_COMMAND消息发布到对话框过程。发布IDABORT关闭对话框,并使对话框功能返回FALSE。如果您需要知道挂钩过程为何关闭对话框,则必须在挂钩过程和应用程序之间提供自己的通信机制。
您可以对公共对话框的标准控件进行子类化。但是,公共对话框过程也可以对控件进行子类化。因此,当您的钩子过程处理WM_INITDIALOG消息时,您应该对控件进行子类化。这确保您的子类过程在对话框过程设置的子类过程之前接收到特定于控件的消息。
PageSetupHook是应用程序定义或库定义的函数名称的占位符。LPPAGESETUPHOOK类型是指向PageSetupHook挂接过程的指针。
也可以看看
EndDialog, PageSetupDlg, PAGESETUPDLG, PostMessage, WM_INITDIALOG, WM_CTLCOLORDLG