С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492

WPARAM wParam, LPARAM lParam

01.06.2010, 14:49. Показов 4596. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех!
Пересмотрел по инету много тем, с WPARAM wParam, LPARAM lParam, но в данном случае не знаю как прописать в void __fastcall TForm1::MyDoMessage(TMessage &msg){
функцию if (!OnWimData(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam))
но на неё ругается.
чтобы сюда получить:
Code
1
2
3
bool __fastcall TForm1::OnWimData(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam)
{...}
прототип bool __fastcall OnWimData(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam);
есть рабочая похожая программа, в неё пытаюсь вставить.У неё рабочий код выглядит так.
Code
1
2
3
4
5
6
7
с void __fastcall TForm1::MyDoMessage(TMessage &msg)
{...
if (!DataWaveIn(MyhWnd,(HWAVEIN)msg.WParam,(LPWAVEHDR)msg.LParam))
...}
bool __fastcall TForm1::DataWaveIn(HWND hWnd, HWAVEIN hwav, LPWAVEHDR pHdr)
{....}
прототип bool __fastcall DataWaveIn(HWND hWnd, HWAVEIN hwav, LPWAVEHDR pHdr);
Заранее при многом благодарен. Garic_
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.06.2010, 14:49
Ответы с готовыми решениями:

Как оброботать WindowProc(Handle, UINT uMsg, WPARAM wParam, LPARAM lParam);
Привет люди мне нужен совет: как оброботать WindowProc(Handle, UINT uMsg, WPARAM wParam, LPARAM lParam); параметры ну я знаю хендл а...

компилятор выдает ошибку на loword(lparam)
Пытаюсь сделать рисование мышкой в билдере со связкой opengl, и нашла пример кода http://****************.ru/showthread.php?t=115509 . Так...

Кто может подсказать с объявлением wParam?
Кто может помочь с объявлением wParam в WM_SYSCOMMAND? Код...

9
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
01.06.2010, 19:18
выложи весь проект. а то так както все смытно и в тумане
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
01.06.2010, 20:00  [ТС]
Вот он, цель запись речи в файл.DirectSound.rar
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
02.06.2010, 15:24  [ТС]
MyDoMessage(TMessage &msg)
msg.выдаёт параметры
msg.WParam
msg.LParam

а мне надо wParam и lParam, заглавие с маленькой буквы w и l . И откуда эти параметры берутся?

Добавлено через 17 часов 20 минут
Еле нашёл, пример.
MSG msg = {0};// структура сообщения
msg.wParam;
msg.lParam;

Кто подскажет как запустить. Господа пож. откликнитесь!!!
0
 Аватар для Danil_e71
32 / 32 / 8
Регистрация: 07.02.2010
Сообщений: 92
02.06.2010, 18:18
Обработка message(если я так понял)
В cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::WMCopyData(TMessage& Message)
{
DWORD DataCount;
char *PassedCommandLine;
PCOPYDATASTRUCT PassedCopyDataStruct;
PassedCopyDataStruct = reinterpret_cast<COPYDATASTRUCT*>(Message.LParam);
DataCount = PassedCopyDataStruct->cbData;
if (DataCount > 0)
   {
 PassedCommandLine = new char[DataCount];
    if (PassedCopyDataStruct->lpData != NULL)
        memmove(PassedCommandLine, PassedCopyDataStruct->lpData, DataCount);
       //Делаем с PassedCommandLine что хотим
   }
Win32Check(ReplyMessage(true));
if(PassedCommandLine!=NULL)delete PassedCommandLine;
}
В .h
public:
C++
1
2
3
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_COPYDATA, TMessage, WMCopyData)
END_MESSAGE_MAP(TForm);
0
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
02.06.2010, 19:21
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct TMessage
{
    unsigned Msg;
    union
    {
        struct 
        {
            Word WParamLo;
            Word WParamHi;
            Word LParamLo;
            Word LParamHi;
            Word ResultLo;
            Word ResultHi;
            
        };
        struct 
        {
            int WParam;
            int LParam;
            int Result;
            
        };
        
    };
} ;
а из опыта: сообщение состоит из собственно сообщения(WM_blablabla) и двух параметров wParam и lParam. все три- в конечном итоге обыкноменный тридцатидвухбитный инт. главное- само сообщение( по значению), два параметра- это параметры, с которыми передается это сообщение.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)- \то называется оконная функция. это необходимо, когда пишется на чистом апи. в случае билдера- абсолютно лишнее. в нем она заменена событиями вроде void __fastcall TForm1::OnBlalala().
msg.Msg;
msg.WParam;
msg.LParam;
это как раз то, что тебе надо( на размер буков не смотри).
рассказывай, что еще непонятно?
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
02.06.2010, 20:36  [ТС]
LRESULT CALLBACK WndProc() с этим понятно выбрасываем, эт, я не успел удалить.

Да непонятно с
bool __fastcall TForm1::OnWimData(WPARAM wParam, LPARAM lParam)

Функцию OnWimData(); вызывать откуда с void __fastcall TForm1::MyDoMessage(TMessage &msg){

Добавлено через 29 минут
рассказывай, что еще непонятно?
Если так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::MyDoMessage(TMessage &msg){
switch(msg.Msg)
{
case MM_WIM_OPEN:
//Просто можно вывести в StatusBar текст
break;
case MM_WIM_DATA:
if (!OnWimData(MyhWnd,WPARAM wParam, LPARAM lParam))
//if (!DataWaveIn(MyhWnd,(HWAVEIN)msg.WParam,(LPWAVEHDR)msg.LParam))
{
ShowMessage("Err Access SoundDriver");
CloseWaveIn(MyhWnd);
}
break;
case MM_WIM_CLOSE:
//Просто можно вывести в StatusBar текст
break;
case WM_DESTROY:
CloseWaveIn(MyhWnd);
Label1->Caption="Sound Close";
default:
msg.Result = DefWindowProc(MyhWnd, msg.Msg, msg.WParam, msg.LParam);
}
}
Ругается на
if (!OnWimData(MyhWnd,WPARAM wParam, LPARAM lParam))
0
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
02.06.2010, 21:19
окно получило сообщение MM_WIM_DATA. далее надо его по идее обработать. а что делает OnWimData(MyhWnd,WPARAM wParam, LPARAM lParam)?
1
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
02.06.2010, 22:22  [ТС]
Хорошо, переделал на
Code
1
2
3
4
5
6
case MM_WIM_DATA:
  if (!OnWimData(MyhWnd,(HWAVEIN)msg.WParam,(LPWAVEHDR)msg.LParam))
{
ShowMessage("Err Access SoundDriver");
CloseWaveIn(MyhWnd);
}
идёт в
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  bool __fastcall TForm1::OnWimData(HWND hWnd, HWAVEIN hwav, LPWAVEHDR pHdr){
 // Óäàëÿåì áëîê èç î÷åðåäè çàïèñè
      waveInUnprepareHeader((HWAVEIN)hwav,
       (LPWAVEHDR)pHdr, sizeof(WAVEHDR));
 
      // Ñîõðàíÿåì çàïèñàííûé áëîê â ôàéëå
   //   FileSave();
 
      // Îñòàíàâëèâàåì è çàêðûâàåì óñòðîéñòâî ââîäà
      waveInReset((HWAVEIN)hwav);
      waveInClose((HWAVEIN)hwav);
      WaveIn = 0;
      return 0;
 }
и возвращаясь выдаёт
ShowMessage("Err Access SoundDriver");
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
03.06.2010, 12:23  [ТС]
Сделал такую проверку, этот код работает:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  bool __fastcall TForm1::OnWimData(HWND hWnd, HWAVEIN hwav, LPWAVEHDR pHdr)
{
PLEVELWAVEIN pInfo;
int n = 0;
int LevelLeft = 0, LevelRight = 0;
int i, l;
while (n < WaveHdr.dwBufferLength)
{      //--- 16 áèò----------------------------------------------------
  if (WaveFormat.wBitsPerSample == 16){
     n++;
     i = (int) (signed char) pHdr->lpData[n];
   }
     n++;
   if (i < 0)
     i = -i;
     l = (i*100) / 128;
    if (LevelLeft < l) LevelLeft = l;
}
   if (waveInAddBuffer(WaveIn, pHdr, sizeof(WAVEHDR)))return false;
 SendMessage(Form1->Handle,WM_USER+1, 0, LevelLeft);
      return (TRUE);
}
А меня интересует не звуковая мигалка, а запись звука в файл, пожал. помогите!

Вот код:АПИ.rar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.06.2010, 12:23
Помогаю со студенческими работами здесь

Передача Float через SendMessage(LParam)
Возможно глупый вопрос, но ситуация следующая: bool __fastcall TForm1::DataWaveIn(HWND hWnd, HWAVEIN hWaveIn, LPWAVEHDR pHdr) { ...

Как предать указатель через LPARAM
Хочу обойтись без глобальных объектов в приложении на Win32Api, в приложении из GUI только два диалога (за основное окно отдувается один из...

error C2440: не конвертируется 'LRESULT (__stdcall General::* )(HWND,UINT,WPARAM,LPARAM)' to 'WNDPROC'
Здравствуйте! Подскажите, пожалуйста, как исправить эту ошибку в этой строчке: wcex.lpfnWndProc =...

Return msg.wParam
Почему в WinMain при завершении программы принято писать return msg.wParam; А почему нельзя просто писать: return...

Преобразовать LPARAM в wchar_t*
Что не так со строчкой: if (Msg == WM_SETTEXT &amp;&amp; wcsstr((LPCTSTR)lParam, L&quot;/ бла бла бла&quot;) != NULL) Вывод: readme.cpp(8): error...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru