Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Диалог Поиск\замена.Запускаем с "толкача" |
Автор: Coocky 4.11.2004, 23:01 |
МФС предоставляет нам кучу стандартных файлов диалога-выбор шрифта,цвета,печати,поиска и замены.Со всеми легко работать...кроме последнего.Но я вас научу ![]() Для того чтобы диалог поиска и замены заработал, нужно проделать следующие мероприятия: Зарегистрировать сообщение FINDMSGSTRING с помощью функции RegisterWindowMessage. Сообщение FINDMSGSTRING посылает диалог Поиска и Замены в том случае, если пользователь нажал на одну из кнопок на нем. Если вы хотите реагировать на FINDMSGSTRING, вам понадобится зарегистрировать его в системе с помощью функции: UINT RegisterWindowMessage( LPCTSTR lpString); Она регистрирует сообщение в системе.Если всё проходит удачно, то тогда возвращается идентификатор сообщения от 0xC000 до 0xFFFF, иначе 0. lpString - имя сообщения. После этого нужно внести это сообщение в карту сообщений приложения. Это делается с помощью макроса ON_REGISTERED_MESSAGE( nMessageVariable, memberFxn ) Он определяет какая функция будет обрабатывать наше сообщение. nMessageVariable - идентификатор сообщения. memberFxn - имя функции. Определить функцию для обработки этого сообщения. Шаг 1: UINT WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING); Шаг 2: Добавляем макрос в карту сообщений.Пример: BEGIN_MESSAGE_MAP(CEDITORDlg, CDialog) //{{AFX_MSG_MAP(CEDITORDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnFindText) ON_REGISTERED_MESSAGE( WM_FINDREPLACE, OnFindReplace ) //}}AFX_MSG_MAP END_MESSAGE_MAP() Ну и естественно описать функцию свою OnFindReplace() в которой и реализуем СВОЙ алгоритм поиска ![]() ![]() Да кстати.Кол-во и вид кнопок на диалоге,устанавливаем в свойствах при создании файла.А вот с нажатие кнопок работаем не через сообщения,а через вызов функций данного класса,которые возвращают значение,если была нажата какя-то кнопка ![]() CFindReplaceDialog ![]() |