Création d’une boîte de dialogue pour la sélection d’un type de format spécifique
Vous souhaiterez peut-être qu’une application autorise l’utilisateur à sélectionner un format dans une liste restreinte de formats dans une boîte de dialogue. Les restrictions peuvent limiter le nombre de canaux, le taux d’échantillonnage, la balise de format audio de forme d’onde ou le nombre de bits par échantillon. Dans tous ces cas, vous pouvez générer la liste à l’aide de la fonction acmFormatChoose , en définissant les membres fdwEnum et pwfxEnum de la structure ACMFORMATCHOOSE . L'exemple suivant illustre ce processus.
MMRESULT mmr;
ACMFORMATCHOOSE afc;
WAVEFORMATEX wfxSelection;
WAVEFORMATEX wfxEnum;
// Initialize the ACMFORMATCHOOSE members.
memset(&afc, 0, sizeof(afc));
afc.cbStruct = sizeof(afc);
afc.fdwStyle = 0L; // no special style flags
afc.hwndOwner = hwnd; // hwnd of parent window
afc.pwfx = &wfxSelection; // wfx to receive selection
afc.cbwfx = sizeof(wfxSelection);
afc.pszTitle = TEXT("16 Bit PCM Selection");
// Request that all 16-bit PCM formats be displayed for the user
// to select from.
memset(&wfxEnum, 0, sizeof(wfxEnum));
wfxEnum.wFormatTag = WAVE_FORMAT_PCM;
wfxEnum.wBitsPerSample = 16;
afc.fdwEnum = ACM_FORMATENUMF_WFORMATTAG |
ACM_FORMATENUMF_WBITSPERSAMPLE;
afc.pwfxEnum = &wfxEnum;
mmr = acmFormatChoose(&afc);
if ((MMSYSERR_NOERROR != mmr) && (ACMERR_CANCELED != mmr))
{
// There was a fatal error in bringing up the list
// dialog box (probably invalid input parameters).
}