Partager via


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). 
}