Creazione di una finestra di dialogo per la selezione di un tipo di formato specifico
È possibile che un'applicazione consenta all'utente di selezionare un formato da un elenco limitato di formati in una finestra di dialogo. Le restrizioni potrebbero limitare il numero di canali, la frequenza di campionamento, il tag di formato audio waveform o il numero di bit per campione. In tutti questi casi, è possibile generare l'elenco usando la funzione acmFormatChoose , impostando i membri fdwEnum e pwfxEnum della struttura ACMFORMATCHOOSE . Nell'esempio che segue viene illustrato questo processo.
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).
}