自動播放 MCIWnd
[與此頁面相關聯的功能 MCIWnd 視窗類別是舊版功能。 它已被 MediaPlayer 取代。 MediaPlayer已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer ,而不是 MCIWnd 視窗類別。 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
}