Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Find Common Dialog 08.06.01 03:14 Число просмотров: 822
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> Привет, All! > > сделал в MFC-шной проге FindText диалог через апи, > отлавливаю когда нажимается кнопка Find, вывожу на экран то > что искалось: > if(message==WM_FINDMESSAGE) > { > > LPFINDREPLACE lpfr= (LPFINDREPLACE)lParam; > > if (lpfr->Flags & FR_FINDNEXT) > { > MessageBox(lpfr->lpstrFindWhat); > } > } > но ничего не выводится - в чем дело? по адресу > lpfr->lpstrFindWhat пусто, хотя половина элементов по > адресу lprf содержат верные значения. где копать? > > Буй!
тут сразу фиг поймешь. я не понял - lpfr->lpstrFindWhat вообще пуст, или MessageBox не выводит на экран?
и еще, если ты пишешь через АПИ, то MessageBox - у тебя какой АПИшный или МФСишный?
еще через что ты передаешь FINDREPLACE, через SendMesage или PostMessage. если PostMessage, то проследи, чтобы твой объект существовал в памяти в момент обработки мессаг. к примеру такое может вызвать ошибку :
FINDREPLACE find;
..................
::PostMessage(hWnd, WM_FINDMESSAGE, 0, (LPARAM)&find);
когда мессага дойдет, от структуры может и ничего не остаться.
тут куча причин могут быть, пока в голову пришли только эти.
и еще не понял как это - "хотя половина элементов по адресу lprf содержат верные значения" - а другая половина где пропадает? и что содержит поле Flags до отправки сообщения и в момент получения? по моему, все таки, если "половина" теряеться по дороге, то твоя структура FINDREPLACE высвобождаеться из памяти и ты получаешь какой то непонятный мусор.
|
|
|