Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Диалог Поиск\замена.Запускаем с "толкача"


Автор: Coocky 4.11.2004, 23:01
МФС предоставляет нам кучу стандартных файлов диалога-выбор шрифта,цвета,печати,поиска и замены.Со всеми легко работать...кроме последнего.Но я вас научу smile
Для того чтобы диалог поиска и замены заработал, нужно проделать следующие мероприятия:

Зарегистрировать сообщение 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() в которой и реализуем СВОЙ алгоритм поиска smile Да,да-свой,никто за вас искать не будет smile
Да кстати.Кол-во и вид кнопок на диалоге,устанавливаем в свойствах при создании файла.А вот с нажатие кнопок работаем не через сообщения,а через вызов функций данного класса,которые возвращают значение,если была нажата какя-то кнопка smile см.МСДН
CFindReplaceDialog smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)