Tutorial: Hospedar un control ActiveX de formularios Windows Forms en Windows Presentation Foundation mediante el uso de XAML

Actualización: noviembre 2007

Para habilitar la interacción mejorada con los exploradores web, puede utilizar controles Microsoft ActiveX en la aplicación basada en WPF. En este tutorial se muestra cómo utilizar Lenguaje de marcado de aplicaciones extensible (XAML) para hospedar Microsoft Windows Media Player como control en una página de WPF.

Entre las tareas ilustradas en este tutorial se incluyen:

  • Crear el proyecto.

  • Crear el control ActiveX.

  • Hospedar el control ActiveX en una página de Windows Presentation Foundation.

Para ver una lista de código completa de las tareas ilustradas en este tutorial, consulte Ejemplo Hosting an ActiveX Control in Windows Presentation Foundation by Using XAML.

Cuando haya completado este tutorial, entenderá cómo utilizar Lenguaje de marcado de aplicaciones extensible (XAML) para hospedar controles ActiveX en una aplicación basada en WPF.

Nota   Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

  • Microsoft Windows Media Player instalado en el equipo donde está instalado Visual Studio.

  • Visual Studio 2008.

Crear el proyecto

Para crear y configurar el proyecto

  1. Cree un proyecto de aplicación de WPF denominado HostingAxInWpf.

  2. Agregue un proyecto de biblioteca de controles de formularios Windows Forms al proyecto de aplicación, y asígnele el nombre WmpAxLib. Para obtener más información, vea Agregar nuevo proyecto (Cuadro de diálogo).

  3. En el Explorador de soluciones, agregue una referencia al ensamblado Microsoft Windows Media Player, que se denomina Wmp.dll.

  4. Abra el Cuadro de herramientas.

  5. Haga clic con el botón secundario del mouse en el Cuadro de herramientas y seleccione Elegir elementos.

  6. Haga clic en la ficha Componentes COM, seleccione el control Reproductor de Windows Media y, a continuación, haga clic en Aceptar para aceptar la selección.

    El control Microsoft Windows Media Player se agrega al Cuadro de herramientas.

  7. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el archivo UserControl1 y seleccione Cambiar nombre.

  8. Cambie el nombre a WmpAxControl.cs o WmpAxControl.vb, según cuál sea el lenguaje utilizado.

  9. Si se le pregunta si desea cambiar el nombre de todas las referencias, haga clic en Sí.

Crear el control ActiveX

Microsoft Visual Studio genera automáticamente una clase contenedora AxHost para un control Microsoft ActiveX cuando el control se agrega a una superficie de diseño. El procedimiento siguiente crea un ensamblado administrado denominado AxInterop.WMPLib.dll.

Para crear el control ActiveX

  1. En el Diseñador de Windows Forms, abra WmpAxControl.

  2. En el Cuadro de herramientas, agregue el control Microsoft Windows Media Player a la superficie de diseño.

  3. En la ventana Propiedades, establezca el valor de la propiedad Dock del control Microsoft Windows Media Player en Fill.

  4. Presione F6 generar la biblioteca de controles.

Hospedar el control ActiveX en una página de Windows Presentation Foundation

Para hospedar el control ActiveX

  1. En el proyecto HostingAxInWpf, agregue una referencia al ensamblado de interoperabilidad del control ActiveX generado.

    Este ensamblado se denomina AxInterop.WMPLib.dll y se agrega a la carpeta Depurar del proyecto WmpAxLib al importar el control Microsoft Windows Media Player.

  2. Agregue una referencia al ensamblado WindowsFormsIntegration, que se denomina WindowsFormsIntegration.dll.

  3. Agregue una referencia al ensamblado de formularios Windows Forms, que se denomina System.Windows.Forms.dll.

  4. Reemplace el código de Window1.xaml por el código siguiente.

    La asignación del espacio de nombres ax establece una referencia al ensamblado AxInterop.WMPLib, que contiene el control AxWindowsMediaPlayer. La clase AxWindowsMediaPlayer se crea como elemento secundario del control WindowsFormsHost.

    <Window x:Class="HostingAxInWpfWithXaml.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
        xmlns:ax="clr-namespace:AxWMPLib;assembly=AxInterop.WMPLib" 
        Title="HostingAxInWpfWithXaml"
          Loaded="WindowLoaded"
        >
    
      <Grid Name="grid1">
    
        <WindowsFormsHost Name="wfh">
          <ax:AxWindowsMediaPlayer x:Name="axWmp"/>
        </WindowsFormsHost>
    
      </Grid>
    
    </Window>
    
  5. Abra Window1.xaml.cs y quite los comentarios de la definición del método WindowLoaded.

  6. Inserte el código siguiente para controlar el evento Loaded.

    private void WindowLoaded(object sender, RoutedEventArgs e)
    {   
        // Get the AxHost wrapper from the WindowsFormsHost control.
        AxWMPLib.AxWindowsMediaPlayer axWmp =
            wfh.Child as AxWMPLib.AxWindowsMediaPlayer;
    
        // Play a .wav file with the ActiveX control.
        axWmp.URL = @"C:\WINDOWS\Media\Windows XP Startup.wav";
    }
    
  7. Presione F5 para generar y ejecutar la aplicación.

Vea también

Tareas

Tutorial: Hospedar un control de formularios Windows Forms en Windows Presentation Foundation mediante el uso de XAML

Ejemplo Hosting an ActiveX Control in Windows Presentation Foundation by Using XAML

Conceptos

Tutorial: Hospedar un control compuesto de formularios Windows Forms en Windows Presentation Foundation

Tutorial: Hospedar un control de Windows Presentation Foundation en formularios Windows Forms

Referencia

ElementHost

WindowsFormsHost

Otros recursos

WPF Designer

Temas "Cómo..." de migración e interoperabilidad