![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIHBlSuQmbpZ2LcNTM3ATOwAjMvw1cldWYtlUeyRnbF9CXtdXb3J2LcRXZu9lbkN3Yfd2bsJ2Xw9CXzV2Zh1WavwFdl5mLuR2cj5yZvxmYtA3Lc9CX6MHc0RHaiojIsJye.jpg)
打开一个文本编辑器,按下Ctrl + F 出现左边图样的对话框--查找对话框,按下Ctrl + H 出现右边图样的对话框--替换替换对话框,在Windows中定义了两个结构体和两个函数,让我们在编程的时候能够很方便的创建这两个对话框。
这两个对话框不像系统中其他的对话框那样,这是非模态的对话框,允许用户在主窗口和这两个窗口之间来回切换。
在创建对话框之前,必须先调用 RegisterWindowMessage注册一个FINDMSGSTRING类型的消息,获得消息的ID号。
FINDREPLACE结构体:
typedef struct {
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
DWORD Flags;
LPTSTR lpstrFindWhat;
LPTSTR lpstrReplaceWith;
WORD wFindWhatLen;
WORD wReplaceWithLen;
LPARAM lCustData;
LPFRHOOKPROC lpfnHook;
LPCTSTR lpTemplateName;
} FINDREPLACE, *LPFINDREPLACE;
lStructSize 结构体的大小,用sizeof(FINDREPLACE)初始化。
hwndOwner 创建查找替换对话框的窗口的句柄,也是接收之前注册的消息的对话框的句柄。
lpstrFindWhat 查找的字符串,使用动态分配的全局或者静态字符数组。
lpstrReplaceWith 替换成的字符串。
wFindWhatLen 查找字符串的长度
wReplaceWithLen 替换成的字符串的长度
如果Flages设置了FR_DOWN位,则DOWN单选按钮被选中;
如果用户点击了对话框中的查找下一个按钮,在发送消息通知创建窗口之前,会设置Flages位,在消息处理函数中可以通过这个为来判断是否点击了“查找下一个按钮”。
配置了结构体以后,调用 FindText 或者ReplaceText函数创建对话框。