(from MSDN)
這個函數開啟一個給定的波形音訊輸出裝置來進行回放。
(The waveOutOpen function opens the given waveform-audio output device for playback)
原型如下:
MMRESULT waveOutOpen(
LPHWAVEOUT phwo,
UINT_PTR uDeviceID,
LPWAVEFORMATEX pwfx,
DWORD_PTR dwCallback,
DWORD_PTR dwCallbackInstance,
DWORD fdwOpen
);
參數介紹(paramters):
phwo
一個指向接收波形音訊輸出裝置柄的緩衝器。用柄來區別(identify
)裝置當呼叫別的波形裝置輸出裝置。如果fdwOpen被設定為WAVE_FORMAT_QUER
Y,那麼這個參數可能為NULL 。
uDevideID
將要被開啟的波形音訊輸出裝置的ID ,它可以是一個裝置ID,也可以
是一個已經開啟的波形音頻輸入裝置柄,你可以用以下的值來貨替:
值 含義
WAVE_MAPPER 該函數選一個能夠播放給定格式的波形音訊輸出裝置
pwfx 一個指向區別將被送到裝置的音頻資料格式的WAVEFORMATEX結構的指標,你可以FREE這個結構當你一將其傳到waveOutOpen 函數;
dwCallback
它指向一個特定的CALLBACK函數,事件柄,視窗柄,或一個將在波形
音頻回放時以便處理與回放進度相關的訊息的期間呼叫的線程ID,如果無須CALL
BACK函數,可以將其設為0 。更多請參看waveOutProc
dwCallbackInstance
傳遞到CALLBACK進程的使用者執行個體資料。如果是視窗CALLBACK進程的話,該參數不用(設為0)
fwOpen
用來開啟裝置的標識(FLAGS),它們的定義如下:
值 含義
CALLBACK_EVENT dwCallback 參數欄是事件柄
CALLBACK_FUNCTION dwCallback 參數欄是CALLBACK過程地址
CALLBACK_NULL 預設的設定,即無CALLBACK進程
CALLBACK_THREAD dwCallback 參數欄是線程ID
CALLBACK_WINDOW dwCallback 參數欄是視窗柄
WAVE_ALLOWSYNC 如果該項被設定,一個同步的裝
置能被開啟。如果在開啟一個同步驅動時沒有用該項,裝置開啟將會失敗。
WAVE_FORMAT_DIRECT 如果設定該項,the ACM driver
does not perform conversions on the audio data.
WAVE_FORMAT_QUERY 如果設定該項,waveOutOpen 詢
問裝置來決定是否支援給定的格式,但裝置實際上並沒有被開啟。
WAVE_MAPPED 該項被設定後uDeviceID參數表示
一個被聲波映射裝置映射的波形裝置。
傳回值:
成功後返回MMSYSERR_NOERROR ,否則返回以下值:
值 描述
MMSYSERR_ALLOCATED 表示資源已存在
MMSYSERR_BADDEVICEID 裝置ID超出範圍
MMSYSERR_NODRIVER 沒有驅動
MMSYSERR_NOMEM 不能分配記憶體
WAVERR_BADFORMAT 企圖開啟一個不被支援的格式
WAVERR_SYNC 裝置是可同步的,但waveOutOpen
沒用有WAVE_ALLOWSYNC呼叫。
註:
用waveOutGetNumDevs
函數測定在當前系統中輸出裝置的數目。如果uDeviceIC參數項是一個裝置ID,
它將會表示從0 到總的數目,WAAVE_MAPPER常量也可以用作裝置ID。
pwfc所指的結構能夠擴充到包含某些資料格式的特殊資訊,例如,對
於PCM資料,一個額外的UNIT
類型用來表示取樣的位元目。在這個情況下用PCMWAVEFORAMT結構。對於其它的
格式,用WAVEFORMATEX結構來表示額外的資料長度。
如果你選用的是一個視窗或線程來接收CALLBACK資訊,如下的資訊將
會被送到視窗處理函數中,來表明波形音訊輸出進程:MM_WOM_OPEN
,MM_WOM_CLOSE ,和MM_WOM_DONE ,
如果你選用的是一個函數來接收CALLBACK資訊,如下的資訊將會被傳
到函數中,來顯示波形音訊輸出進程:WOM_OPEN ,WOM_CLOSE ,WOM_DONE.
要求:
Windows NT/2000/XP: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Mmsystem.h; include Windows.h.
Library: Use Winmm.lib.