| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Вопрос по сообщениям |
| Автор: Dmitry_177 29.9.2006, 15:32 | ||||
При использовании VCL сообщения можно так ловить:
Вопрос в том, зачем иногда в конце обработки делают такое присваивание Message.Result := 1;? В данном случае с WM_COPYDATA... А еще как такое присваивание сделать(если нужно) если обрабатвать без использования VCL, на чистом API?
|
| Автор: Romikgy 29.9.2006, 15:46 | ||
Добавлено @ 15:47 А зачем , имхо для того чтобы сказать системе или др. приложению , что ты обработал мессагу успешно |
| Автор: Dmitry_177 29.9.2006, 16:30 |
| Т.е. всегда надо делать такое присваивание во всех сообщениях? или только в каких-то определенных? |
| Автор: Romikgy 29.9.2006, 16:35 |
| имхо желательно во всех, но 1 или 0 в зависимость от удачности или неудачности выполненого кода |
| Автор: Dmitry_177 29.9.2006, 16:41 |
| т.е. 1-это удачно, а 0 - неудачно? |
| Автор: Yanis 29.9.2006, 17:09 | ||||
| Dmitry_177 По каждому сообщению в справке имеется раздел Return Values.
В данном случае 1 (True), а 0 (False). Добавлено @ 17:10
А при обработке этого сообщения Result должен быть равным кол-ву скопированых в буфер символов. |
| Автор: Romikgy 29.9.2006, 21:37 |
имхо в вин апи почти везде 0 - неудача не равно 0 - удача, хотя может быть на оборот имхо мсдн рулит |
| Автор: Dmitry_177 1.10.2006, 16:03 | ||
| Подскажите тогда еще мне вот что: Result := DefWindowProc (Window, Message, WParam, LParam); --> Зачем мы делаем это присваивание, в конце, если Result равен 0 (изначально) или 1?
|
| Автор: Dmitry_177 1.10.2006, 16:50 | ||
Может так надо делать?
|
| Автор: Romikgy 1.10.2006, 16:51 |
нужно если в обработчике ты не допускаешь дохода проги к если ты вызываешь эту строку то присвоение можно не делать |
| Автор: Dmitry_177 1.10.2006, 17:07 |
| DefWindowProc я как понимаю вызывает windows-обработчик этого сообщения, а вот в данном случае с WM_COPYDATA, так надо делать, как я показал в последнем примере? |
| Автор: Romikgy 1.10.2006, 17:13 |
пропущено слово "стандартный" т.е. ты перехватываешь существующие обработчики сообщений, и если надо передаешь управление старому обработчику, если не надо , то не вызываешь его |
| Автор: Dmitry_177 1.10.2006, 17:16 |
| т.е. что-то типа inherited? |
| Автор: Romikgy 1.10.2006, 18:29 |
| да , что то типа |