对于每个常见对话框,您可以启用挂钩过程以从默认对话框过程中处理消息。常见的常见对话框钩子过程有两种:
*与大多数常用对话框一起使用的标准挂钩程序
*“打开并另存为”对话框支持的资源管理器式挂钩过程
当您为其中一个常见对话框提供标准挂钩过程时,默认对话框过程将按照以下步骤处理其消息。
信息 | 处理 |
WM_INITDIALOG | 默认对话框过程在将消息传递给挂接过程之前处理消息。消息的【lParam的】参数是指向创建对话框时指定的初始化结构的指针。 |
所有其他消息 | 挂钩过程首先接收消息。然后,挂钩过程的返回值确定默认对话程序是否处理消息或忽略它。 |
对于资源管理器样式的打开和另存为对话框,挂钩过程不会在公共对话框中接收用于标准控件的消息。而是从对话框接收通知消息,并在自定义模板中定义任何其他控件的消息。有关详细信息,请参阅资源管理器钩子程序.
要启用挂钩过程,请在对话框的相应结构的旗成员中设置ENABLEHOOK值。如果设置了ENABLEHOOK标志,则结构的lpfnHook成员必须指定挂钩过程的地址。
下表显示了为每个常用对话框提供的挂钩过程的类型。
常用对话框类型 | 钩子程序 |
颜色 | CCHookProc |
查找或替换 | FRHookProc |
字形 | CFHookProc |
打开或另存为 (资源管理器风格) | OFNHookProc |
打开或另存为 (老式) | OFNHookProcOldStyle |
打印 | PrintHookProc |
页面设置 | PageSetupHook |
对于“页面设置”对话框,您还可以指定PagePaintHook挂接过程。这是一个特殊的挂钩过程,您可以使用它来自定义页面设置对话框显示的示例页面的外观。
注意“打印设置”对话框已被“页面设置”对话框取代,该对话框应由为Windows 95或Windows NT版本3.51或更高版本编写的新应用程序使用。但是,为了与早期版本的Windows兼容,PrintDlg功能将继续支持显示打印设置对话框。您可以为“打印设置”对话框提供SetupHookProc挂接过程。