Форум программистов, компьютерный форум CyberForum.ru

Отправка и обработка пользовательских сообщений - C++

Восстановить пароль Регистрация
 
Predlegion
3 / 3 / 0
Регистрация: 21.01.2011
Сообщений: 27
09.10.2011, 01:54     Отправка и обработка пользовательских сообщений #1
Задача стоит в том, чтобы выйти из CALLBACK'а с помощью сообщения.
Дело в том что вызов определенной функции в CALLBACK'е ведет к зависанию программы(потому что эта функция может стать предпосылкой этого самого CALLBACK'а).
Поэтому принято решение выходить из него с помощью SendMessage и выполнять все необходимые действия.

Но к сожалению, я никогда не сталкивался с посылкой и обработкой сообщений(особенно пользовательских) ,поэтому не знаю как его послать и обработать. Надеюсь на помощь форумчан по этому вопросу.Хотелось раз и навсегда с эти разобраться.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.10.2011, 02:55     Отправка и обработка пользовательских сообщений #2
слишком размыто...
поясните на примере что вы хотите сделать.
покажите колбек функцию и вызывающую функцию.
Predlegion
3 / 3 / 0
Регистрация: 21.01.2011
Сообщений: 27
09.10.2011, 14:23  [ТС]     Отправка и обработка пользовательских сообщений #3
Мне не хотелось бы выкладывать много кода,тем более я понимаю как тяжело разбираться в чужом коде.

Что это за функции:

В моей программе идет работа со звуковой картой с помощью функций семейства waveInOpen(...),waveInStart(...) waveInAddBuffer(...) итд .
Так вот, когда буфер заполняется, вызывается этот CALLBACK,внутри которого идет обработка буфера звуковой карты. В одном из случев ,по окочанию этого CALLBACK необходимо вызвать функцию waveInReset() или waveInStop().
Но проблема заключается в том,что НЕЛЬЗЯ вызывать функции waveInReset() или waveInStop() из "тела" CALLBACK'а, потому что это ведет к зависанию программы(об этом написано в MSDN).

Но можно вызвать эту функцию из любого другого места,главное что не из CALLBACK.

Поэтому в теле CALLBACK нужно отправив сообщение. А затем ,в обработчике сообщений вызвать эти функции waveInReset() и waveInStop().

Но как отравить и обработать сообщение неизвестно.

Делаю:
C++
1
2
3
4
5
HWND hmes;
const int MY_MESS=WM_USER+1;
.....
.....
SendMessage(hmes,MY_MESS,0,0)ж
а как написать обработчик сообщения не знаю. И вообще не уверен,что правильно отправляю.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.10.2011, 16:49     Отправка и обработка пользовательских сообщений #4
посмотри
http://vsokovikov.narod.ru/New_MSDN_...ostmessage.htm
может поможет?
Yandex
Объявления
09.10.2011, 16:49     Отправка и обработка пользовательских сообщений
Ответ Создать тему
Опции темы

Текущее время: 00:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru