Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 811

•  TDictionary Custom Sort  6 814

•  Fast Watermark Sources  6 597

•  3D Designer  9 558

•  Sik Screen Capture  6 933

•  Patch Maker  7 384

•  Айболит (remote control)  7 329

•  ListBox Drag & Drop  6 187

•  Доска для игры Реверси  98 156

•  Графические эффекты  7 500

•  Рисование по маске  6 789

•  Перетаскивание изображений  5 644

•  Canvas Drawing  6 021

•  Рисование Луны  5 813

•  Поворот изображения  5 264

•  Рисование стержней  3 858

•  Paint on Shape  3 015

•  Генератор кроссвордов  3 966

•  Головоломка Paletto  3 146

•  Теорема Монжа об окружностях  3 981

•  Пазл Numbrix  2 630

•  Заборы и коммивояжеры  3 442

•  Игра HIP  2 359

•  Игра Go (Го)  2 271

•  Симулятор лифта  2 675

•  Программа укладки плитки  2 235

•  Генератор лабиринта  2 786

•  Проверка числового ввода  2 395

•  HEX View  2 729

•  Физический маятник  2 420

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Как реализовать регулятор громкости



Автор: Nomadic

Да всё пpосто. Даже, я бы сказал, тyпо. :-)


INT GetMasterVolumeControlID()
{
  // get dwLineID
  MIXERLINE mxl;
  mxl.cbStruct = sizeof(MIXERLINE);
  mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
  if (::mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl,
    MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
    != MMSYSERR_NOERROR)
    return 34;
  // get dwControlID
  MIXERCONTROL mxc;
  MIXERLINECONTROLS mxlc;
  mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
  mxlc.dwLineID = mxl.dwLineID;
  mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
  mxlc.cControls = 1;
  mxlc.cbmxctrl = sizeof(MIXERCONTROL);
  mxlc.pamxctrl = &mxc;
  if (::mixerGetLineControls((HMIXEROBJ)ghmx, &mxlc,
    MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
    != MMSYSERR_NOERROR)
    return 34;
  return mxc.dwControlID;
}
 
 BOOL SetMasterVolume(DWORD dwVolume)
 {
   MIXERCONTROLDETAILS mxcd;
   MIXERCONTROLDETAILS_UNSIGNED mxcd_u;
   mxcd.cbStruct = sizeof(mxcd);
   mxcd.dwControlID = MasterVolumeControlID;
   mxcd.cChannels = 1;
   mxcd.cMultipleItems = 0;
   mxcd.cbDetails = 4;
   mxcd.paDetails = &mxcd_u;
   mmr = mixerGetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
   if (MMSYSERR_NOERROR != mmr) return FALSE;
   mxcd_u.dwValue = dwVolume;
   mmr = mixerSetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
   if (MMSYSERR_NOERROR != mmr) return FALSE;
   return TRUE;
 }

Переписывать на Delphi, думаю, ни к чему. Надо лишь не забыть добавить uses MMSystem; Громкость отдельных каналов очень просто устанавливается через auxSetVolume и аналогичные.








Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте