Sortie son muet (win32)

Description

Lancez applet son par 2 clic sur icone son.
Vous devriez voir la coche 'Muet' de 'Sons wave' changer en cliquant sur les boutons du prog.

Source / Exemple :


#include <windows.h>
#include "resource.h"
#include <mmsystem.h>

#pragma comment(lib, "Winmm.lib")

HWND hinfo;
char szERRMUTE[] = "ERREUR";

int __stdcall SndVolumeMute(DWORD bmute)
{
  HMIXER hmixer;
  void *pmem;
  MIXERCONTROL mxc;
  MIXERLINECONTROLS mxlc;
  MIXERLINE mxl;
  MIXERCONTROLDETAILS mxcd;
  MIXERCONTROLDETAILS_UNSIGNED mxcdu;
  int lerror = 1; // PRESUME ERREUR
  if(!mixerGetNumDevs()) goto muteExit;
  if(mixerOpen(&hmixer, 0, 0, 0, 0)) goto muteExit;
  mxl.cbStruct = sizeof(MIXERLINE);
  mxl.dwComponentType = 0x1008;
  if(mixerGetLineInfo((HMIXEROBJ) hmixer, &mxl, 3)) goto mxClose;
  mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
  mxlc.dwLineID = mxl.dwLineID;
  mxlc.dwControlType = 0x20010002; // MUTE
  mxlc.cControls = mxl.cControls;
  mxlc.cbmxctrl = sizeof(MIXERCONTROL);
  pmem = VirtualAlloc(0, sizeof(MIXERCONTROL), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
  if(!pmem) goto mxClose;
  mxlc.pamxctrl = pmem;
  mxc.cbStruct = sizeof(MIXERCONTROL);
  if(mixerGetLineControls((HMIXEROBJ) hmixer, &mxlc, 2)) goto relMem;
  RtlCopyMemory(&mxc, mxlc.pamxctrl, sizeof(MIXERCONTROL));
  mxcd.hwndOwner = 0;
  mxcd.dwControlID = mxc.dwControlID;
  mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
  mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
  mxcd.paDetails = pmem;

  • ((DWORD*) pmem) = 0;
mxcd.cChannels = 1; mxcdu.dwValue = mxc.Bounds.dwMinimum; if(bmute) mxcdu.dwValue += (((mxc.Bounds.dwMaximum - mxc.Bounds.dwMinimum) * 100) / 100);
  • ((DWORD*) mxcd.paDetails) = *((DWORD*) &mxcdu);
if(!mixerSetControlDetails((HMIXEROBJ) hmixer, &mxcd, 0)) lerror = 0; relMem: VirtualFree(pmem, 0, MEM_RELEASE); mxClose: mixerClose(hmixer); muteExit: return lerror; } BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case WM_INITDIALOG: SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION)); hinfo = GetDlgItem(hdlg, IDST_INFO); return 1; case WM_COMMAND: switch(wParam) { case ID_SOUND: SetWindowText(hinfo, SndVolumeMute(0) ? szERRMUTE : 0); return 0; case ID_NOSOUND: SetWindowText(hinfo, SndVolumeMute(1) ? szERRMUTE : 0); return 0; case IDCANCEL: EndDialog(hdlg, 0); } } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z) { DialogBoxParam(hInstance, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0); return 0; }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.