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