728x90
WPF From 내부안에 긍즉적으로 다른 윈도우가 종속족으로 퐇마될 수 없습니다. 그러나 이를 가능하게 해주는 클래스가 지난 강좌(WPF에서 윈폼 컨트롤 클래스 사용히기)에서 다루었던 ElementClass입니다. Element 클래스를 이용하여 ActiveX를 컨트롤할 수 있는데요
ActiveX 컨트롤 추가하는 방법
1. ActiveX Importer(AXIMP.EXE)를 실행
(이 유틸리티는 윈도우즈 SDK의 닷넷컴퍼넌트에 포함되어 있습니다.)
2. Visual Studio에서 윈폼 프로젝트를 만든다음 [도구상자]-[항목선택]을 한다음 [도구상자선택항목]의 [COM 구성요소]템에 있는 ActiveX를 선택하여 도구상자에 추가한다음 이 컨트롤을 윈폼에 마우스로 드레그하여 추가하는 방법(추가하면 윈폼에서 자동으로 실행됩니다.)
이 강좌에서는 2번째 방법을 택하여 ActiveX를 추가해보겠습니다.
윈도우 미디어 플레이어 ActiveX를 추가하였습니다.
드레그 하여 윈폼에 추가합니다. 어쨌든 여기서 필요한 건 AxWMPLib.dll과 WMPLib.dll 이기 때문에 윈폼 프로젝트의 참조된 두개의 dll을 그대로 WPF 프로젝트의 참조에 추가해줍니다.
xaml Code
<Window x:Class="WPFActiveX.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="515" Width="450">
<Grid x:Name="grid">
</Grid>
</Window>
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms.Integration;
namespace WPFActiveX
{
///<summary>
/// Window1.xaml에 대한 상호 작용 논리
///</summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Window1_Loaded);
}
void Window1_Loaded(object sender, RoutedEventArgs e)
{
grid.BeginInit();
grid.Height = 500;
grid.Width = 480;
RowDefinition row = new RowDefinition();
row.Height = new GridLength(450);
grid.RowDefinitions.Add(row);
row = new RowDefinition();
row.Height = GridLength.Auto;
grid.RowDefinitions.Add(row);
AxWMPLib.AxWindowsMediaPlayer axWmp = new AxWMPLib.AxWindowsMediaPlayer();
WindowsFormsHost host = new WindowsFormsHost();
host.Child = axWmp;
TextBox txtUrl = new TextBox();
txtUrl.Text = @"mms://wm.microsoft.com/ms/korea/etc/vs2008_1_Opening.wmv";
string wmpURL = txtUrl.Text.ToString();
grid.Children.Add(host);
grid.Children.Add(txtUrl);
Grid.SetRow(host, 0);
Grid.SetRow(txtUrl, 1);
axWmp.uiMode = "mini";
axWmp.URL = wmpURL;
}
}
}
코드설명은 ActiveX 부분만 간단히 설명하겠습니다.
AxWMPLib.AxWindowsMediaPlayer axWmp = new AxWMPLib.AxWindowsMediaPlayer();
위 코드는 윈도우 미디어 플레이어 ActiveX를 사용하기 위해 추가된 dll을 인스턴스 생성하는 부분입니다.
axWmp.uiMode = "mini";
axWmp.URL = wmpURL;
Summary
WPF에서 ActiveX를 컨트롤 할 일은 그렇게 많지 않겠지만 기존에 개발된 ActiveX를 사용해야 한다면 좋은 대안이 될 수 있을 것입니다.
참고 사이트
'.NET C#' 카테고리의 다른 글
모니터 해상도(Tip) (0) | 2008.09.15 |
---|---|
Aero Glass(에어로 글래스) 사용하기 (2) | 2008.08.24 |
Flash Movie 실행하기 (0) | 2008.08.07 |
ToolTipService 컨트롤 (0) | 2008.07.18 |
윈폼(Winform) 컨트롤 사용하기 (0) | 2008.07.14 |
비스타에서 Visual Studio 2005 SP1 업그레이드 할때 발생하는 문제 해결 (2) | 2008.05.20 |
ASP.NET으로 구현하는 블로그 프로그래밍 PDF 공개 (0) | 2008.01.15 |
댓글