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);
FindText в RichEdit
Подскажите, пожалуйста, в чем может быть проблема. Пишу приложение на чистом WinAPI, нужно реализовать поиск в RichEdit'е. Собственно говоря, практически переписал пример из MSDN'а:
Код:
Соответственно, основной цикл обработки сообщений:
Код:
while (GetMessage(&msg, hMainWnd, 0, 0) && !quit) {
if (!IsWindow(hFindDlg) || !IsDialogMessage(hFindDlg, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Sleep(5);
}
if (!IsWindow(hFindDlg) || !IsDialogMessage(hFindDlg, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Sleep(5);
}
При запуске поиска диалог поиска отрисовывается нормально, но ни на что не реагирует. Где я неправ?
Спасибо.
Код:
while (GetMessage(&msg, hMainWnd, 0, 0) && !quit)
Писал этот код давно, еще до того, как появилась необходимость поиска, и не учел, что приложение должно отлавливать сообщения от всех окон, принадлежащих потоку, т.е.
Код:
while (GetMessage(&msg, NULL, 0, 0) && !quit)