Curso de C++ Builder


Sonidos



En este ejemplo se crará un formulario que contendrá un componente MediaPlayer que servirá para reproducir ficheros .WAV. Utilizaremos la gestión de excepciones para controlar la correcta ejecución del programa.

  1. Crear y configurar el proyecto.
  2. Para más información, pinchar el siguiente enlace:

    En primer lugar, crear el directorio Sonidos. y, si procede, una nueva aplicación ( File | New Application).

    Guardar proyecto: Salvar Unit1.cpp como Ppal.cpp y Project1.bpr como Sonidos.bpr

     

  3. Configurar el formulario.
  4. Configurar el formulario para que tenga el aspecto mostrado en la figura siguiente:

    Cambiar el título (Caption por Sonidos) y añadir los siguientes componentes:

    1. Cuatro botones normales (Button) llamados (Name): LogoffBtn, MSSoundBtn, ErrorBtn y OtrosBtn con el texto (Caption) indicado en la figura anterior.
    2. Un botón BitBtn para terminar.
    3. Un control MediaPlayer (pestaña System) no visible (Visible=false).
    4. Un cuadro de diálogo OpenDialog (pestaña Dialogs).

     

  5. Escribir los gestores de eventos asociados a la pulsación de los botones.
  6. La gestión de las interrupciones capturadas se realiza con una función común cuyo prototipo es:

       void Error (AnsiString & name, Exception & e);
    

    que se escribirá por encima de todas las funciones de Ppal.cpp. Así, los gestores de los eventos OnClick asociados a los botones serán los siguientes:

    //--------------------------------------------------------------
    
    void __fastcall TForm1::LogoffBtnClick(TObject *Sender)
    {
       MediaPlayer1->FileName = "C:\\WINDOWS\\MEDIA\\Logoff.wav";
       try {
          MediaPlayer1->Open();
          MediaPlayer1->Wait = true;
          MediaPlayer1->Play();
          MediaPlayer1->Close();
       }
       catch (Exception & e) {
          Error (MediaPlayer1->FileName, e);
       }
    }
    //--------------------------------------------------------------
    
    void __fastcall TForm1::MSSoundBtnClick(TObject *Sender)
    {
       MediaPlayer1->FileName = "C:\\WINDOWS\\MEDIA\\The Microsoft Sound.wav";
       try {
          MediaPlayer1->Open();
          MediaPlayer1->Wait = true;
          MediaPlayer1->Play();
          MediaPlayer1->Close();
       }
       catch (Exception & e) {
          Error (MediaPlayer1->FileName, e);
       }
    }
    //--------------------------------------------------------------
    
    void __fastcall TForm1::ErrorBtnClick(TObject *Sender)
    {
       MediaPlayer1->FileName = "C:\\WINDOWS\\MEDIA\\NoEsta.wav";
       try {
          MediaPlayer1->Open();
          MediaPlayer1->Wait = true;
          MediaPlayer1->Play();
          MediaPlayer1->Close();
       }
       catch (Exception & e) {
          Error (MediaPlayer1->FileName, e);
       }
    }
    //--------------------------------------------------------------
    
    void __fastcall TForm1::OtrosBtnClick(TObject *Sender)
    {
      OpenDialog1->Title = "Abrir un fichero de sonido";
      OpenDialog1->Filter = "Ficheros de sonido (*.wav) | *.WAV";
      OpenDialog1->InitialDir = "C:\\WINDOWS";
    
      if (OpenDialog1->Execute())
      {
         MediaPlayer1->FileName = OpenDialog1->FileName;
         try {
            MediaPlayer1->Open();
            MediaPlayer1->Wait = true;
            MediaPlayer1->Play();
            MediaPlayer1->Close();
         }
       catch (Exception & e) {
          Error (MediaPlayer1->FileName, e);
       }
      } // if (OpenDialog1->Execute())
    }
    //--------------------------------------------------------------
    
    void Error (AnsiString & name, Exception & e)
    {
       ShowMessage ("Fallo en la reproducción del fichero de sonido: " + name +
          "\nExcepción: " + AnsiString(e.ClassName()) +
          "\nDetalles: " + AnsiString(e.Message));
    }
    //--------------------------------------------------------------
    

Cuando se ejecuta este programa, si se pulsa en el botón Error (se supone que el fichero de sonido que se quiere reproducir no existe) aparece la siguiente ventana:

En cambio, si se quiere reproducir un fichero cuyo formato no sea .wav aparece la siguiente ventana:



Atrás