LPPRINTHOOKPROC 回调函数 (commdlg.h)

接收用于 “打印 ”对话框的默认对话框过程的消息或通知。 这是与 PrintDlg 函数一起使用的应用程序定义或库定义的回调函数。

LPPRINTHOOKPROC 类型定义指向此回调函数的指针。 PrintHookProc 是应用程序定义或库定义的函数名称的占位符。

语法

LPPRINTHOOKPROC Lpprinthookproc;

UINT_PTR Lpprinthookproc(
  HWND unnamedParam1,
  UINT unnamedParam2,
  WPARAM unnamedParam3,
  LPARAM unnamedParam4
)
{...}

参数

unnamedParam1

消息所针对的“ 打印 ”对话框的句柄。

unnamedParam2

正在接收的消息的标识符。

unnamedParam3

关于消息的附加信息。 确切的含义取决于 unnamedParam2 参数的值。

unnamedParam4

关于消息的附加信息。 确切的含义取决于 unnamedParam2 参数的值。

如果 unnamedParam2 参数指示 WM_INITDIALOG 消息, 则 unnamedParam4 是指向 PRINTDLG 结构的指针,其中包含创建对话框时指定的值。

返回值

如果挂钩过程返回零,则默认对话框过程将处理消息。

如果挂钩过程返回非零值,则默认对话框过程将忽略该消息。

注解

使用 PrintDlg 函数 创建打印对话框 时,可以提供 PrintHookProc 挂钩过程来处理用于对话框过程的消息或通知。 若要启用挂钩过程,请使用传递给对话框创建函数的 PRINTDLG 结构。 在 lpfnPrintHook 成员中指定挂钩过程的地址,并在 Flags 成员中指定PD_ENABLEPRINTHOOK标志。

默认对话框过程先处理 WM_INITDIALOG 消息,然后再将其传递给挂钩过程。 对于所有其他消息,挂钩过程首先接收消息。 然后,挂钩过程的返回值确定默认对话过程是处理消息还是忽略它。

如果挂钩过程处理 WM_CTLCOLORDLG 消息,则必须返回有效的画笔句柄来绘制对话框的背景。 通常,如果挂钩过程处理任何 WM_CTLCOLOR* 消息,则必须返回有效的画笔句柄来绘制指定控件的背景。

请勿从挂钩过程中调用 EndDialog 函数。 相反,挂钩过程可以调用 PostMessage 函数,将具有 IDABORT 值的WM_COMMAND消息发布到对话框过程。 发布 IDABORT 将关闭对话框,并使对话框函数返回 FALSE。 如果需要了解挂钩过程关闭对话框的原因,则必须在挂钩过程与应用程序之间提供自己的通信机制。

可以对公共对话框的标准控件进行子类化。 但是,对话框过程也可能对控件进行子类化。 因此,在挂钩过程处理 WM_INITDIALOG 消息时,应子类控件。 这可确保子类过程在对话框过程设置的子类过程之前接收特定于控件的消息。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 commdlg.h (包括 Windows.h)

另请参阅

通用对话框库

概念性

EndDialog

PRINTDLG

PostMessage

PrintDlg

引用

WM_CTLCOLORDLG

WM_INITDIALOG