自定义录制过程

[与此页面关联的功能 MCIWnd Window 类是一项旧功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaPlayer 而不是 MCIWnd 窗口类。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

你可以自定义录制过程,完全控制大部分内容 - 从创建 MCIWnd 窗口到将录制的信息保存在文件中。 以下示例查询 MCI 设备的录制和保存功能,并包括用于在内容的开头或结尾录制的菜单命令。

以下示例使用 MCIWndCreate 函数创建新窗口,并允许指定一个现有文件来存储记录的数据,并使用 MCIWndNew 宏将新文件与该窗口相关联。 或者,可以使用 MCIWndOpenMCIWndOpenDialog 宏来指定文件。

该示例使用 MCIWndCanRecord 宏来验证设备是否可以记录,并使用 MCIWndCanSave 宏来验证设备是否保存信息。 该示例使用 MCIWndHomeMCIWndEnd 宏设置当前播放位置。 该示例使用 MCIWndRecord 宏开始录制。 记录信息后,该示例使用 MCIWndSaveDialog 宏保存信息。

case WM_COMMAND: 
    switch (wParam) 
    { 
        case IDM_CREATEMCIWND: 
            g_hwndMCIWnd = MCIWndCreate( hwnd, g_hinst, 
                WS_VISIBLE | WS_CHILD | 
                MCIWNDF_RECORD,                   // add Record button
                NULL ); 
 
            MCIWndNew(g_hwndMCIWnd, "waveaudio"); // new file 
 
            if( MCIWndCanRecord(g_hwndMCIWnd) ) 
            { 
                MessageBox( hwnd, 
                "Press the red button on the toolbar to record.", 
                "MCIWnd Record", 
                MB_OK ); 
            } 
            else 
            { 
                MessageBox( hwnd, 
                    "This device doesn't record.", 
                    "MCIWnd Record", 
                    MB_OK ); 
            } 
            break; 
        case IDM_RECORDATSTART: 
            if( MCIWndCanRecord(g_hwndMCIWnd) ) 
            { 
                MCIWndHome(g_hwndMCIWnd); 
                MCIWndRecord(g_hwndMCIWnd); 
            } 
            else 
            { 
                MessageBox( hwnd, 
                    "This device doesn't record.", 
                    "MCIWnd Record", 
                    MB_OK); 
            } 
            break; 
        case IDM_RECORDATEND: 
            if( MCIWndCanRecord(g_hwndMCIWnd) ) 
            { 
                MCIWndEnd(g_hwndMCIWnd); 
                MCIWndRecord(g_hwndMCIWnd); 
            } 
            else 
            { 
                MessageBox( hwnd, 
                    "This device doesn't record.", 
                    "MCIWnd Record", 
                    MB_OK); 
            } 
            break; 
        case IDM_SAVEMCIWND: 
            if( MCIWndCanSave(g_hwndMCIWnd) ) 
                MCIWndSaveDialog(g_hwndMCIWnd); 
    } 
    break; 
 
    // Handle other messages here.