FindText函数创建一个系统定义的无模式对话框,允许用户指定要搜索的字符串以及在文档中搜索文本时使用的选项。
HWND FindText(
LPFINDREPLACE 【LPFR】 | //具有初始化数据的结构指针 |
); |
参数
【LPFR】
指向FINDREPLACE结构的指针,其中包含用于初始化对话框的信息。该对话框使用此结构将有关用户输入的信息发送到您的应用程序。有关详细信息,请参阅以下备注部分。
返回值
如果函数成功,则返回值是对话框的窗口句柄。您可以使用窗口句柄进行通信或关闭对话框。
如果函数失败,返回值为NULL。要获取扩展错误信息,请调用CommDlgExtendedError功能。CommDlgExtendedError可能会返回以下错误代码之一:
CDERR_FINDRESFAILURE | CDERR_MEMLOCKFAILURE |
CDERR_INITIALIZATION | CDERR_NOHINSTANCE |
CDERR_LOCKRESFAILURE | CDERR_NOHOOK |
CDERR_LOADRESFAILURE | CDERR_NOTEMPLATE |
CDERR_LOADSTRFAILURE | CDERR_STRUCTSIZE |
CDERR_MEMALLOCFAILURE | FRERR_BUFFERLENGTHZERO |
备注
FindText功能不执行搜索操作。而是将对话框发送FINDMSGSTRING注册消息到对话框所有者窗口的窗口过程。创建对话框时,FINDREPLACE结构的hwndOwner成员标识所有者窗口。
在致电FindText之前,您必须调用RegisterWindowMessage函数获取FINDMSGSTRING消息的标识符。对话框过程使用此标识符在用户单击查找下一个按钮或对话框关闭时发送消息。FINDMSGSTRING消息的【lParam的】参数包含指向FINDREPLACE结构的指针。此结构的旗成员指示导致消息的事件。结构的其他成员表示用户的输入。
如果创建“查找”对话框,则还必须在应用程序的主消息循环中使用IsDialogMessage函数,以确保对话框正确处理键盘输入,例如TAB和ESC键。IsDialogMessage返回一个值,该值指示“查找”对话框是否处理了该消息。
您可以为“查找”对话框提供FRHookProc挂钩过程。挂钩过程可以处理发送到对话框的消息。要启用挂钩过程,请在FINDREPLACE结构的旗成员中设置FR_ENABLEHOOK标志,并在lpfnHook成员中指定挂钩过程的地址。
也可以看看
CommDlgExtendedError, FINDMSGSTRING, FINDREPLACE, FRHookProc, IsDialogMessage, RegisterWindowMessage, ReplaceText