Чтобы настроить диалоговое окно Найти (Find) или Заменить (Replace), вы можете использовать любой из ниже перечисленных методов:
- Определить значения в структуре FINDREPLACE, когда создается диалоговое окно
- Снабдить индивидуальным шаблоном
- Предусмотреть фильтр (hook) - процедуру событий
Когда вы создаете диалоговое окно Найти (Find) или Заменить (Replace), вы можете установить флажки в члене Flags структуры FINDREPLACE, чтобы скрыть или запретить работу любого органа управления параметрами поиска. Например, вы можете установить флажок FR_NOMATCHCASE, чтобы запретить работу отмечаемого блока С учетом регистра (Match Case) или установить флажок FR_HIDEMATCHCASE, чтобы скрыть его.
Вы можете снабдить диалоговое окно Найти (Find) или Заменить (Replace) пользовательским шаблоном, к примеру, если вы захотите включить дополнительные элементы управления, которые присущи только вашей прикладной программе. Функции FindText и ReplaceText используют ваш пользовательский шаблон вместо шаблона по умолчанию.
Чтобы снабдить пользовательским шаблоном диалоговое окно Найти (Find) или Заменить (Replace)
- Если ваш пользовательский шаблон - ресурс в прикладной программе или динамически подключаемой библиотеки, установите флажок FR_ENABLETEMPLATE в члене структуры Flags. Члены структуры hInstance и lpTemplateName используйте, чтобы идентифицировать модуль и название ресурса.
или
- Если ваш пользовательский шаблон уже в памяти, установите флажок FR_ENABLETEMPLATEHANDLE. Используйте член структуры hInstance, чтобы идентифицировать объект памяти, который хранит в себе шаблон.
Вы можете предоставить диалоговому окну Найти (Find) или Заменить (Replace) фильтр - процедуру FRHookProc. Фильтр-процедура (hook) может обрабатывать сообщения, отправляемые в диалоговое окно. Если вы используете пользовательский шаблон, чтобы определить дополнительные органы управления, вы должны предусмотреть фильтр (hook) - процедуру для обработки вводимых данных в ваши элементы управления
Чтобы включить в работу фильтр (hook) - процедуру для диалогового окна Найти (Find) или Заменить (Replace)
1. Установите флажок FR_ENABLEHOOK в члене Flags структуры FINDREPLACE.
2. Определите адрес фильтр - процедуры в элементе lpfnHook.
После обработки своего сообщения WM_INITDIALOG, процедура диалогового окна отправляет сообщение WM_INITDIALOG в фильтр - процедуру. Параметр lParam этого сообщения - указатель на структуру FINDREPLACE, которая используется для инициализации диалогового окна.
Если фильтр (hook) - процедура в ответ на сообщение WM_INITDIALOG возвращает значение ЛОЖЬ (FALSE), диалоговое окно не будет показано до тех пор, пока его не покажет фильтр - процедура. Чтобы сделать это, сначала выполняют любые другие операции рисования, а затем вызывают функции ShowWindow и UpdateWindow. Код ниже дает пример:
// Мы возвратили ЛОЖЬ (FALSE) в ответ на WM_INITDIALOG. // Мы выполнили любые другие операции рисования. // Теперь мы показываем на экране диалоговое окно. ShowWindow(hDlg, SW_SHOWNORMAL); UpdateWindow(hDlg); |