共用方式為


自動化MCIWnd介面的播放功能

[與此頁面相關聯的功能,MCIWnd 視窗類別是舊版功能。 MediaPlayer已取代它。 MediaPlayer 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式代碼盡可能使用 MediaPlayer,而不是 MCIWnd Window 類別。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

您可以在 MCIWndCreate 函式中指定特定視窗樣式,將 MCIWnd 的播放自動化。 若要使用裝置進行播放,視窗需要有一個父視窗來處理通知訊息、播放 AVI 檔案的區域,以及裝置模式變更通知以識別何時播放停止。 視窗不需要工具列。 您可以在 MCIWndCreate 中指定適當的樣式,以設定這些特性。

下列範例會使用功能表命令來建立 MCIWnd 視窗,以播放來自數種不同類型裝置的內容。 MCIWndCreate 函式會建立 MCIWnd 視窗,並使用裝置特定命令中的 MCIWndOpen 巨集載入裝置和檔案。 當裝置完成播放時,您可以藉由截獲 MCIWNDM_NOTIFYMODE 訊息,接著發出 MCIWndClose 宏來關閉裝置。

case WM_COMMAND: 
    switch (wParam) 
    { 
        case IDM_CREATEMCIWND: 
            dwMCIWndStyle = WS_CHILD |     // child window
                WS_VISIBLE |               // visible
                MCIWNDF_NOTIFYMODE |       // notifies of mode changes
                MCIWNDF_NOPLAYBAR;            // hides toolbar 
            g_hwndMCIWnd = MCIWndCreate(hwnd, 
                g_hinst, dwMCIWndStyle, NULL); 
            break; 
        case IDM_PLAYCDA: 
            LoadNGoMCIWnd(hwnd, "CDAudio"); 
            break; 
        case IDM_PLAYWAVE: 
            LoadNGoMCIWnd(hwnd, "SoundWave.WAV"); 
            break; 
        case IDM_PLAYMIDI: 
            LoadNGoMCIWnd(hwnd, "MIDIFile.MID"); 
            break; 
        case IDM_PLAYAVI: 
            LoadNGoMCIWnd(hwnd, "AVIFile.AVI"); 
            break; 
        case IDM_EXIT: 
            MCIWndDestroy(g_hwndMCIWnd); 
            DestroyWindow(hwnd); 
            break; 
    } 
    break; 
 
case MCIWNDM_NOTIFYMODE: 
    if (lParam == MCI_MODE_STOP)  // device stopped
    { 
        MessageBox(hwnd,"","Closing Device",MB_OK); 
        MCIWndClose(g_hwndMCIWnd); 
    } 
    break; 

// Handle other messages here. 
 
// LoadNGoMCIWnd - automatically loads and plays a multimedia device 
// 
// hwnd -  handle to the parent window 
// lpstr - pointer to device or filename played by device 
// 
// Global variable 
// extern HINSTANCE g_hwndMCIWnd;  instance handle to MCIWnd window 
 
VOID LoadNGoMCIWnd(HWND hwnd, LPSTR lpstr) 
{ 
    MessageBox(hwnd, lpstr, "Loading Device", MB_OK); 
    MCIWndOpen(g_hwndMCIWnd, lpstr, NULL);   // new device in window 
    MCIWndPlay(g_hwndMCIWnd);                // plays device 
}