Win32 API. Библиотека стандартных диалоговых окон
Страница 24. Настройка диалогового окна Найти (Find) или Заменить (Replace)



Настройка диалогового окна Найти (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);

 
« Предыдущая статья   Следующая статья »