4.34 - Настройка диалогового окна Найти (Find) или Заменить (Replace)

Чтобы настроить диалоговое окно Найти (Find) или Заменить (Replace), вы можете использовать любой из ниже перечисленных методов:

  1. Определить значения в структуре FINDREPLACE, когда создается диалоговое окно
  2. Снабдить индивидуальным шаблоном
  3. Предоставить фильтр - процедуру (ловушку)

Когда вы создаете диалоговое окно Найти (Find) или Заменить (Replace), вы можете установить флажки в элементе Flags структуры FINDREPLACE, чтобы скрыть или запретить работу любого из параметров поиска элементов управления. Например, вы можете установить флажок FR_NOMATCHCASE, чтобы запретить работу отмечаемого блока С учетом регистра (Match Case) или установить флажок FR_HIDEMATCHCASE, чтобы скрыть его.

Вы можете снабдить диалоговое окно Найти (Find) или Заменить (Replace) пользовательским шаблоном, к примеру, если вы захотите включить дополнительные элементы управления, которые присущи только вашей прикладной программе. Функции FindText и ReplaceText используют ваш пользовательский шаблон вместо шаблона по умолчанию.

Чтобы снабдить пользовательским шаблоном диалоговое окно Найти (Find) или Заменить (Replace)

1. Создайте индивидуальный шаблон, модифицируя шаблон по умолчанию, определенный в файле FINDTEXT.DLG. Идентификаторы элементов управления, используемые по умолчанию в шаблоне диалога Найти (Find) или Заменить (Replace), определены в файле DLGS.H

2. Чтобы разрешить работу шаблона, используйте структуру FINDREPLACE, как указано ниже:

Если ваш пользовательский шаблон - ресурс в прикладной программе или динамически компонуемой библиотеки, установите флажок FR_ENABLETEMPLATE в элементе Flags. Используйте элементы hInstance и lpTemplateName структуры, чтобы идентифицировать модуль и название ресурса.

ИЛИ

Если ваш пользовательский шаблон уже в памяти, установите флажок FR_ENABLETEMPLATEHANDLE. Используйте элемент hInstance, чтобы идентифицировать объект памяти, который хранит в себе шаблон.

Вы можете предоставить диалоговому окну Найти (Find) или Заменить (Replace) фильтр - процедуру FRHookProc. Фильтр -процедура может обрабатывать сообщения, посылаемые в диалоговое окно. Если вы используете пользовательский шаблон, чтобы определить дополнительные элементы управления, вы должны предоставить фильтр - процедуру для обработки в водимых данных для ваших элементов управления.

Чтобы включить в работу фильтр - процедуру для диалогового окна Найти (Find) или Заменить (Replace)

1. Установите флажок FR_ENABLEHOOK в элементе Flags структуры FINDREPLACE.

2. Определите адрес фильтр - процедуры в элементе lpfnHook.

После обработки своего сообщения WM_INITDIALOG, процедура диалогового окна передаёт сообщение WM_INITDIALOG в фильтр - процедуру. Параметр lParam этого сообщения указывает на структуру FINDREPLACE, которая используется для инициализации диалогового окна.

Если фильтр - процедура в ответ на сообщение WM_INITDIALOG возвращает значение ЛОЖЬ (FALSE), диалоговое окно не будет показано до тех пор, пока его не покажет фильтр - процедура. Чтобы сделать это, сначала выполняют любые другие операции прорисовки, а затем вызывают функции ShowWindow и UpdateWindow. Код ниже дает пример:

// Мы возвратили ЛОЖЬ (FALSE) в ответ на WM_INITDIALOG.  
// Мы выполнили любые другие операции прорисовки. 
// Теперь мы показываем диалоговое окно. 

ShowWindow(hDlg, SW_SHOWNORMAL); 
UpdateWindow(hDlg); 

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 19.03.2002