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