Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

FindText в RichEdit

278
16 января 2011 года
Alexander92
1.1K / / 04.08.2008
Здравствуйте!
Подскажите, пожалуйста, в чем может быть проблема. Пишу приложение на чистом WinAPI, нужно реализовать поиск в RichEdit'е. Собственно говоря, практически переписал пример из MSDN'а:

Код:
const UINT uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING);
 HWND hFindDlg = (HWND)NULL;
 // ...
 FINDREPLACE fr;
 char szFindWhat[MAX_FIND_STRING_LEN+1] = {'\0'};

 ZeroMemory((PVOID)&fr, sizeof(FINDREPLACE));
 fr.lStructSize = sizeof(FINDREPLACE);
 fr.hwndOwner = hMainWnd;
 fr.lpstrFindWhat = szFindWhat;
 fr.wFindWhatLen = sizeof(szFindWhat);
 fr.Flags = 0;
 
 hFindDlg = FindText(&fr);


Соответственно, основной цикл обработки сообщений:
 
Код:
while (GetMessage(&msg, hMainWnd, 0, 0) && !quit) {
     if (!IsWindow(hFindDlg) || !IsDialogMessage(hFindDlg, &msg)) {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
     }
     Sleep(5);
 }



При запуске поиска диалог поиска отрисовывается нормально, но ни на что не реагирует. Где я неправ?
Спасибо.
278
29 января 2011 года
Alexander92
1.1K / / 04.08.2008
Всем спасибо, вопрос закрыт. Оплошность была вот здесь:
 
Код:
while (GetMessage(&msg, hMainWnd, 0, 0) && !quit)

Писал этот код давно, еще до того, как появилась необходимость поиска, и не учел, что приложение должно отлавливать сообщения от всех окон, принадлежащих потоку, т.е.
 
Код:
while (GetMessage(&msg, NULL, 0, 0) && !quit)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог