IPrintDialogCallback::HandleMessage 方法 (commdlg.h)

PrintDlgEx 调用,使应用程序有机会处理发送到“打印属性表常规“页下半部分中子对话框的消息。 子对话框包含类似于 “打印 ”对话框的控件。

语法

HRESULT HandleMessage(
  HWND    hDlg,
  UINT    uMsg,
  WPARAM  wParam,
  LPARAM  lParam,
  LRESULT *pResult
);

参数

hDlg

类型:HWND

“常规”页下半部分中子对话框的句柄。

uMsg

类型: UINT

接收的消息的标识符。

wParam

类型:WPARAM

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

lParam

类型:LPARAM

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

如果 uMsg 参数指示 WM_INITDIALOG 消息, 则 lParam 是指向 PRINTDLGEX 结构的指针,其中包含在创建属性表时指定的值。

pResult

类型: LRESULT*

指示消息的对话框过程要返回的结果。 如果处理消息,则指向 的值应为 TRUE ,否则应为 FALSE ,或者根据消息类型为任何适当的值。

返回值

类型: HRESULT

如果 IPrintDialogCallback::HandleMessage 实现处理了消息,则返回S_OK。 在这种情况下, PrintDlgEx 函数不执行任何默认消息处理。

如果希望 PrintDlgEx 执行其默认消息处理,则返回S_FALSE

备注

对于WM_NOTIFY消息传递的通知消息,必须使用具有 DWL_MSGRESULT 值的 SetWindowLong 函数来设置返回值。 调用 SetWindowLong 时,请使用 GetParent (hDlg) 设置“常规”页(子窗口的父窗口)的DWL_MSGRESULT值。

“常规”页下半部分中子窗口的默认对话框过程在将消息传递到 HandleMessage 方法之前处理WM_INITDIALOG消息。 对于发送到子窗口的所有其他消息, HandleMessage 首先接收消息。 然后, HandleMessage 返回值确定默认对话过程是处理消息还是忽略它。

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

不要从 HandleMessage 方法调用 EndDialog 函数。 相反, HandleMessage 可以调用 PostMessage 函数,将具有 IDABORT 值的 WM_COMMAND 消息发布到对话框过程。 发布 IDABORT 会关闭 Print 属性表,并导致 PrintDlgEx 返回 PRINTDLGEX 结构的 dwResultAction 成员中的PD_RESULT_CANCEL 如果需要了解 HandleMessage 关闭对话框的原因,则必须在 HandleMessage 方法和应用程序之间提供自己的通信机制。

可以在“ 常规 ”页的下半部分对子对话框的标准控件进行子类化。 这些标准控件类似于“ 打印 ”对话框中的控件。 但是,默认对话框过程也可能将控件子类化。 因此,应在 HandleMessage 处理WM_INITDIALOG消息时对 控件进行 子类控制。 这可确保子类过程在对话框过程设置的子类过程之前接收特定于控件的消息。

要求

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

另请参阅

通用对话框库

概念性

EndDialog

IPrintDialogCallback

其他资源

PRINTDLGEX

PostMessage

PrintDlgEx

引用

SetWindowLong

WM_COMMAND

WM_CTLCOLORDLG

WM_INITDIALOG

WM_NOTIFY