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