Udostępnij przez


Dostosowywanie procesu nagrywania

[Funkcja skojarzona z tą stroną, MCIWnd Window Class, jest starszą funkcją. Został zastąpiony przez MediaPlayer. MediaPlayer został zoptymalizowany pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer zamiast klasy okna MCIWnd, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Możesz dostosować proces nagrywania, przejąć pełną kontrolę nad większością wszystkich elementów — od utworzenia okna MCIWnd w celu zapisania zarejestrowanych informacji w pliku. Poniższy przykład zapytuje urządzenie MCI o możliwości nagrywania i zapisywania oraz zawiera polecenia menu umożliwiające nagrywanie na początku lub na końcu zawartości.

W poniższym przykładzie użyto funkcji MCIWndCreate w celu utworzenia nowego okna i umożliwia określenie istniejącego pliku do przechowywania zarejestrowanych danych oraz makra MCIWndNew w celu skojarzenia nowego pliku z oknem. Alternatywnie możesz użyć makra MCIWndOpen lub MCIWndOpenDialog, aby określić plik.

W przykładzie użyto makra MCIWndCanRecord, aby sprawdzić, czy urządzenie może rejestrować dane, a MCIWndCanSave makro w celu sprawdzenia, czy urządzenie zapisuje informacje. Przykład ustawia bieżącą pozycję odtwarzania przy użyciu makr MCIWndHome oraz MCIWndEnd. Nagrywanie rozpoczyna się w przykładzie przy użyciu makra MCIWndRecord. Po zarejestrowaniu informacji przykład zapisuje je przy użyciu makra 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.