Microsoft Windows Media Center (WMC)는 Windows Vista Home Premium Edition, Windows Vista Ultimate 및 Microsoft Windows XP Media Center Edition 2005 와 함께 설치되는 디지털 미디어 엔터테인먼트 응용 프로그램입니다. WMC 를 사용하면, 텔레비전 (디지털 고정밀 TV), DVD, 음악, 비디오, 라디오, 전화 등 다방면에 걸친 미디어를 사용 및 관리할 수 있습니다.
WMC 퍼스널컴퓨터 (PC)에서는 아무것도 설정하지 않아도 디지털 미디어 표시나 재생이 바로 가능합니다. 이것은 사용자가 마우스, 키보드 및 모니터를 사용하여 PC 에서 WMC 를 작업하기 때문에 "2'사용자 경험 " 이라 불립니다.
한편, WMC PC 는 리모콘이나 원격 키보드 입력을 지원하도록 구성할 수도 있습니다. 이 경우, 사용자는 WMC PC 를 그 자리에서 작업할 필요는 없습니다. 이것은 "10'사용자 경험" 으로 대형화면 모니터나 일반적인 홈 엔터테인먼트 하드웨어 (텔레비전이나 사운드 시스템 등)를 사용하는 WMC 구성에 적절합니다.
WMC 가 제공하는 코어 기능은 디지털 미디어의 관리나 재생을 위한 일련의 응용 프로그램으로 구성됩니다. 다만, WPF 를 사용하고, Windows Vista 버전의 WMC 용 독자적인 사용자 지정 응용 프로그램을 작성할 수도 있습니다.
여기에서는 WMC 용 WPF 응용 프로그램 개발 소개를 설명합니다. 여기서 취급하는 내용은 다음과 같습니다.
-
단순한 WPF 게임 응용 프로그램을 구축 및 배포한다.
-
2' 및 10' 모두 WMC 사용자 경험을 대상으로 한다.
-
WMC 를 지원하기 위해서 WPF 컨트롤을 사용자 지정한다.
-
새로운 WMC 용 WPF 컨트롤을 사용한다.
-
.NET Framework 지원을 이용한다.
-
매니지 API 를 통해 WMC와 통합한다.
-
Visual Studio 2005 를 사용하여 개발 프로세스를 강화한다.
WMC 용 응용 프로그램 개발의 자세한 내용은 Windows 미디어 센터 소프트웨어 개발 킷 (WMC SDK)을 참조해 주세요.
이 토픽에는 다음의 섹션이 포함되어 있습니다.
WMC
로의 WPF 응용 프로그램의 호스트WPF에서는 독립 실행형과 브라우저 호스트의 두가지 응용 프로그램을 개발할 수 있습니다. 독립 실행형 응용 프로그램에는 응용 프로그램 컨텐츠를 호스트하기 위한 독자적인 윈도우나 대화상자가 있습니다. 브라우저 호스트 응용 프로그램에는 Loose XAML 응용 프로그램과 XBAP의 두 종류가 있고, 모두 Internet Explorer 7 에 의해 호스트됩니다. 다만, Internet Explorer 7에서는 WPF 는 인식되지 않습니다. 이 때문에 WPF 는 Internet Explorer 7 에서 WPF 컨텐츠를 호스트 할 수 있도록, Internet Explorer 와 같은 응용 프로그램에 호스팅 프록시를 제공합니다. 이 프록시가 다른 응용 프로그램 대신에 WPF 컨텐츠를 호스트 합니다. 이 프록시는 Internet Explorer 와 같은 공통의 Windows 인프라를 사용하여 구축되었기 때문에 Internet Explorer 로 그대로 호스트 할 수 있습니다.
이 프록시는 WMC에서도 호스트 하기위해, WPF 브라우저 호스트 응용 프로그램을 WMC 로 호스트 할 수 있습니다. 따라서, WPF 응용 프로그램 개발 플랫폼 전반 (특히 브라우저 호스트 응용 프로그램의 탐색 기능이나 보안 기능)을 이용할 수 있게 됩니다.
이후에서는 WMC 용의 WordGame! 응용 프로그램을 사용합니다 ( 「Windows Media Center 용 WordGame!의 데모」를 참조해 주세요).
WMC
용 WPF 응용 프로그램의 실행WordGame! 응용 프로그램은 다음의 세가지 파일로 구성됩니다 (모든 XBAP 에 필요한 최소 파일).
-
wordgamewmc.exe.XBAP 입니다.
-
wordgamewmc.exe.manifest.ClickOnce 응용 프로그램 매니페스트입니다.
-
wordgamewmc.xbap.ClickOnce 배포 매니페스트입니다.
XBAP은 ClickOnce 를 사용하여 실행되므로 응용 프로그램 매니페스트 파일과 배포 매니페스트 파일에 의해 구성되어 있어야 합니다 ( 「WPF 응용 프로그램 (WPF) 빌드」를 참조해 주세요).구체적으로 말하면, XBAP은.xbap 파일을 참조 또는 더블 클릭하면 실행합니다. 실행 때의 기본값 동작에서는 WPF 대신에 ClickOnce 가 응용 프로그램을 다운로드합니다. 다운로드가 완료하면, WPF 가 Internet Explorer 를 실행하여 다음 그림과 같이 응용 프로그램으로 이동합니다.
한편, WMC 응용 프로그램을 실행하려면, WMC 링크 파일 (.mcl)를 참조 또는 더블 클릭합니다. .mcl 파일은 XML 구성 파일에서 참조 또는 더블 클릭하면 WMC 호스트 (ehshell.exe)에서 열리도록 Windows에서 구성됩니다 (WMC SDK 를 참조해 주세요).
메모
: |
|---|
|
.mcl 파일은 개발과정에서는 편리하지만, WMC 응용 프로그램 설치나 실행을 위한 메커니즘으로는 권장하지 않습니다. 자세한 내용은「WMC 용 WPF 응용 프로그램 설치」를 참조해 주세요. |
.mcl 파일을 열면, 포함된 구성 명령이 WMC 호스트에 의해 분석 처리됩니다. 그 중에서도 가장 중요한 구성 명령은 여는 응용 프로그램의 이름입니다. 이 메커니즘을 이용하여 XBAP을 실행하도록 구성된 .mcl 파일을 작성합니다.
<application url="http://localhost/wordgamewmc/wordgamewmc.xbap" />
.mcl 파일이 WMC 에 의해서 처리되면, WMC 호스트가 .xbap 파일로 이동합니다. 그 결과, 다음의 그림과 같이 ClickOnce 가 WMC 호스트내에서 응용 프로그램을 실행합니다.
메모
: |
|---|
|
WMC 로 Loose XAML 응용 프로그램을 호스트하는 경우는 다음과 같이.xaml 파일을 사용하여 .mcl 파일을 구성합니다. |
<application url="http://localhost/loosexamlapplication/loosexamlpage.xaml" />
XBAP 자체에는 변경을 추가하지 않고 구성 파일을 하나 추가하여 WPF 브라우저 호스트 응용 프로그램을 그대로 WMC 에서 호스트 할 수 있습니다.
다만, WMC 사용자 경험은 매우 특수하기 때문에 XBAP WMC 응용 프로그램의 디자인에서는 일관성이나 스타일을 위해, WMC 사용자 경험의 통합이 필요합니다. 이후에서는 WMC 사용자 경험의 중요한 면과 그 사용자 경험을 배려한 XBAP 구축 방법에 대해 설명합니다.
WMC의 사용자 경험일관성 있는 사용자 경험 제공은 응용 프로그램 개발에서 매우 중요합니다. WMC 사용자와 관련된 다음과 같은 점으로 응용 프로그램의 일관성을 유지하도록 노력해야 합니다.
-
테마.응용 프로그램의 사용자 인터페이스의 전체적인 스타일.
-
레이아웃.컨트롤의 위치 및 크기.
-
탐색.키보드, 마우스 및 리모콘에 의한 응용 프로그램의 사용자 인터페이스 탐색.
WMC의 사용자 경험을 대략적으로 설명합니다.
테마
다음 그림과 같이, WMC의 테마에는 몇가지 독특한 요소가 있습니다.
그 중에서도 가장 특징적인 것은 푸른 유리와 같은 배경과 둥글고 밝은 색의 큰 폰트입니다. 모니터 앞에 앉아 있는 2'사용자와 텔레비전에서 어느 정도 떨어져 있는 10'사용자 모두가 보기 쉬운 형태를 만듭니다. WPF 응용 프로그램에서는 이러한 형태에 대한 전체적인 접근 방식에 따를 필요는 있지만, WMC에서는 이 정보가 WPF 응용 프로그램에 대해서 네이티브로 공개되지 않습니다. 다행히 WPF에는 스타일이나 테마의 풍부한 인프라가 준비되어 있기 때문에 이것을 이용하면, WMC의 형태를 필요에 따라서 간단하게 복제할 수 있습니다. 또, WPF 를 사용하여 시각적으로 풍부한 완전히 새로운 사용자 경험을 작성할 수도 있습니다. 다만, 그 경우는 레이아웃이나 탐색에 유의해야 합니다.
예를 들어 다음과 같이, WMC 스타일의 페이지 배경을 작성할 수 있습니다.
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="HomePage.xaml"> <!--MediaCenterThemes.xaml--> <Application.Resources> <LinearGradientBrush x:Key="PageGlassyBackground" StartPoint="0,0.5" EndPoint="1,0.5"> <GradientStop Color="#ff2B6680" Offset="1.5" /> <GradientStop Color="#569dc2" Offset="0" /> </LinearGradientBrush> ... </Application.Resources> </Application>
일반적으로 테마는 복수의 요소로 구성되어 있기 때문에 사용자 지정 리소스 사전을 사용하여 WMC 테마의 스타일 캡슐화를 검토해야 합니다.
<ResourceDictionary> xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" /> <LinearGradientBrush x:Key="PageGlassyBackground" StartPoint="0,0.5" EndPoint="1,0.5"> <GradientStop Color="#ff2B6680" Offset="1.5" /> <GradientStop Color="#569dc2" Offset="0" /> </LinearGradientBrush> ... </ResourceDictionary>
리소스 사전을 응용 프로그램에 통합에는 응용 프로그램 정의의 Application.Resources 요소를 구성하고, 리소스 사전의 .xaml 파일을 참조합니다.
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" StartupUri="HomePage.xaml"> <!--MediaCenterThemes.xaml--> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="MediaCenterTheme.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
다음의 그림은 완전한 WMC 테마의 스타일과 리소스를 사용하여 업데이트 된 WordGame!을 보여줍니다.
WMC에서는 응용 프로그램이나 브랜드 고유의 요소를 포함한 응용 프로그램 테마의 개발이 제한되는 것은 아닙니다. 다만, WMC 사용자 경험용으로 응용 프로그램을 디자인할 때 , 응용 프로그램의 테마에 대해 몇 가지를 고려해야 합니다. 그 예를 다음에서 보여줍니다.
-
텔레비전에 적절한 색 : 번지기 쉬운 선명한 색은 사용하지 말아 주세요 (초록이나 빨강 등).
-
대비 : 텍스트가 배경에 용해되지 않도록, 비주얼 요소의 전경색과 배경색의 대비에 유의해 주세요.
-
폰트 : 세리프(serif)가 없는 큰 폰트를 사용하면 가독성이 향상합니다. 또, 컨텐츠에서 불필요한 표현을 없애면, 텍스트 영역이 보다 읽기 쉬워집니다.
-
버튼 : 버튼의 형태는 간단하게 합니다.
-
이미지 : 이미지를 작성할 경우에는 표시 품질, 디스플레이 크기 및 다운로드 크기를 고려합니다.
-
애니메이션 : 필요에 따라서 애니메이션을 사용합니다.
WMC의 응용 프로그램 테마의 자세한 내용은 WMC SDK 를 참조해 주세요.
레이아웃
사용자가 WMC 호스트 위에 마우스를 두면, 다음의 그림과 같이 마우스 구동 탐색을 위한 추가 탐색 UI 요소가 표시됩니다. 언뜻 봐서 모를 수도 있지만, 문제가 있습니다.
이 그림에서는 응용 프로그램의 UI의 왼쪽 상단과 오른쪽 하단의 부분이 탐색 크롬에 덮여 버립니다. 이러한 경우는 탐색 UI 를 고려하여, UI의 레이아웃을 업데이트 할 수 있습니다. WordGame!의 경우, 응용 프로그램의 제목을 UI의 오른쪽으로 이동하여, 홈 페이지의 컨텐츠를 호스트한 Grid 요소의 맨 밑에 높이 50 픽셀의 행을 추가합니다.
<Grid> ... <Grid.RowDefinitions> <RowDefinition Height="5" /> <RowDefinition Height="Auto" /> <RowDefinition Height="20" /> <RowDefinition Height="Auto" /> <RowDefinition /> <RowDefinition Height="50" /> </Grid.RowDefinitions> <!-- Game title --> <TextBlock ... TextAlignment="Right">Word Game!</TextBlock> ... </Grid>
이러한 행을 추가한 결과는 다음의 그림과 같이 됩니다.
이와 같이 WMC 용 XBAP에서는 WMC의 다양한 레이아웃의 동작이나 일관성을 고려해야 합니다.
레이아웃에 관한 주요 고려사항을 다음에서 보여줍니다.
-
응용 프로그램의 레이아웃 : 응용 프로그램의 사용자 인터페이스를 사용자에서 기억하기 쉽고, 잊지 않도록 간단하고 일관성 있는 레이아웃으로 해야 합니다.
-
WMC의 레이아웃 : 응용 프로그램의 레이아웃에서는 무리가 없는 한, WMC의 전체적인 사용자 경험의 일관성을 유지해야 합니다. 이렇게 하여 WMC 에 익숙한 사용자들이 시작할 수 있는 응용 프로그램이 됩니다.
-
비디오 : 응용 프로그램에서 WMC 매니지 API 를 사용하여 비디오를 표시하는 경우, WMC 는 화면의 왼쪽 하단에서 비디오를 재생합니다. 사용자 인터페이스의 레이아웃에서 이것을 고려해야 합니다.
-
해상도 : 응용 프로그램의 사용자 인터페이스와 레이아웃의 대상 해상도를 1024 x 768 으로 합니다. WPF 에는 해상도 1024 x 768의 사용자 인터페이스의 레이아웃과 사용자 인터페이스의 크기를 변경했을 경우의 레이아웃의 유지를 지원하는 레이아웃 지원이 있습니다 (자세한 내용은 「레이아웃 시스템」을 참조해 주세요).
WMC의 레이아웃의 자세한 내용은 WMC SDK 를 참조해 주세요.
탐색
테마와 레이아웃은 기본적으로 응용 프로그램의 사용자 인터페이스를 구성하는 컨트롤의 배포 방법을 결정합니다. 한편, 탐색은 사용자가 그러한 컨트롤에 도달하는 방법이나 컨트롤 사이를 이동하는 방법을 결정합니다.
현재 사용자 입력을 받는 컨트롤을 포커스를 가지는 컨트롤이라고 부릅니다. XBAP 응용 프로그램의 페이지가 표시되고 있을 때 특정의 컨트롤에 포커스를 이동하려면, 다음의 마크 업을 사용합니다.
<!-- Set focus on guess character text box --> <Page ... FocusManager.FocusedElement="{Binding ElementName=guessedChar}"> ... </Page>
여기에서는 2'모드와 10'모드의 양쪽 모두의 조작을 지원해야 합니다.
2'모드와 10'모드의 양쪽 모두로 사용자가 WMC 응용 프로그램의 컨트롤 사이를 이동할 수 있도록 하려면, 마우스, 키보드 (접속된 키보드 또는 원격 키보드) 및 리모콘에 의한 탐색을 응용 프로그램에서 처리해야 합니다. 마우스와 키보드에 의한 탐색은 다른 WPF 응용 프로그램의 경우와 같습니다. 이것에는 기본값으로 다음의 조작이 포함됩니다.
-
컨트롤을 클릭하여 그 컨트롤에 포커스를 이동한다.
-
Tab 키를 사용하여 컨트롤의 사이에 포커스를 차례로 이동한다.
-
버튼의 IsDefault 속성을 사용하고, Return 키가 밀렸을 때에 기본값으로 클릭 되는 버튼을 지정한다.
-
버튼의 IsCancel 속성을 사용하고, Esc 키가 밀렸을 때에 기본값으로 클릭 되는 버튼을 지정한다.
리모콘을 지원하려면, 방향 탐색을 지원해야 합니다. 즉, 사용자가 리모콘의 상하 좌우의 각 버튼을 눌러 컨트롤의 포커스를 이동할 수 있도록 해야 합니다. WPF 컨트롤의 특정의 부분집합을 사용하면 방향 탐색 지원을 위한 특별한 코드를 쓸 필요는 없습니다.
WMC
용 WPF 컨트롤의 업데이트WPF 에는 다수의 컨트롤이 있지만 기본값에서 WMC 응용 프로그램 사용에 적절한 컨트롤은 그 중의 일부 뿐입니다. WMC 응용 프로그램 사용에 적절한지는 리모콘을 사용하여 그 컨트롤로 이동하여 그 컨트롤을 조작하고, 그 컨트롤에서 다른 컨트롤로 이동할 수 있을지에 의해서 정해집니다. 다음의 그림은 리모콘 입력을 지원하는 WPF 컨트롤의 부분집합을 나타냅니다.(WMC 스타일이 사용).
이외의 WPF 컨트롤은 사용할 수 없는 것은 아니지만, WMC 로 이외의 컨트롤을 사용하려면 추가 작업이 필요합니다. 다음 그림과 같은 WMC 가 호스트하는 Slider 컨트롤을 생각해 보겠습니다.
Slider는 기본값으로 마우스, 키보드 또는 리모콘을 사용하여 표시하거나 다른 컨트롤에서 이동할 수 있습니다. 그러나, 리모콘을 사용하여Slider에서 다른 컨트롤로 이동할 수 없습니다. Slider가 리모콘의 상하 좌우의 각 버튼을 누르면, Slider 값을 증감하려 한다고 해석되기 때문입니다.
이러한 상황을 해결하려면, 목적의 컨트롤과 그 컨트롤을 조작하기 위한 추가 컨트롤 (리모콘에 대응한 컨트롤)을 포함한 복합 컨트롤을 작성하는 방법이 있습니다. 예를 들어 Slider는 두개의 버튼 (Slider 값을 감소하는 버튼과 Slider 값을 증가하는 버튼)을 사용하여 사용할 수도 있습니다. 그렇게 하려면 다음의 코드를 사용합니다.
<Page x:Class="SliderPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!-- Custom Slider --> <StackPanel Margin="50" Orientation="Horizontal" VerticalAlignment="Top"> <Button Name="decrementButton" Click="decrementButton_Click" Margin="10" FontSize="10" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="40" Height="40"> - </Button> <Slider Name="slider" Focusable="False" Width="100" Margin="0,15,0,0" Minimum="0" Maximum="10" Value="50" Interval="1" TickFrequency="1" TickPlacement="BottomRight" /> <Button Name="incrementButton" Click="incrementButton_Click" Margin="10" FontSize="10" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="40" Height="40"> + </Button> </StackPanel> </Page>
using System.Windows; using System.Windows.Controls; public partial class SliderPage : System.Windows.Controls.Page { //</SnippetSliderPageCodeBehind1> public SliderPage() { InitializeComponent(); } void decrementButton_Click(object sender, RoutedEventArgs e) { this.slider.Value--; } void incrementButton_Click(object sender, RoutedEventArgs e) { this.slider.Value++; } }
결과는 다음의 그림과 같이 됩니다.
그
외의 WMC 용 WPF 컨트롤다음 그림에 보이는 TextBox 컨트롤도 문제가 됩니다. 리모콘에서는 TextBox 에 문자를 입력할 수 없습니다. 거기서, 리모콘 사용자가 문자를 선택할 수 있는 컨트롤이 필요합니다. 폼 팩터의 제한에 의해 완전한 키보드를 장비할 수 없는 모바일 장치에서는 사용자 인터페이스에 키보드를 표시하고, 사용자가 필요한 문자를 선택할 수 방법이 자주 사용 됩니다.
이 샘플에는 다음의 그림에 보이는 WMC 용 WPF 응용 프로그램을 위한 소프트키보드 컨트롤이 포함되어 있습니다.
이것은 샘플에 포함된 Keyboard.dll 어셈블리의 SoftKeyboardTextBox
클래스로서 구현됩니다.
이 어셈블리는 MCEControls 네임 스페이스에 있습니다. 이것을
사용하려면, 다음 순서로 실행합니다.
-
MCEControls 에 포함된 Keyboard 어셈블리에의 참조를 추가합니다.
-
컨텐츠내의 어셈블리에 XML 네임 스페이스 선언을 추가합니다.
-
SoftKeyboardTextBox 를 선언 및 구성하는 XAML 를 추가합니다.
결과 코드는 다음과 같이 됩니다.
<Page ... xmlns:MCEControls="clr-namespace:MCEControls;assembly=Keyboard" > ... <MCEControls:SoftKeyboardTextBox Name="guessedChar" Grid.Column="0" Margin="0,0,5,0" Width="80" MaxLength="1" /> ... </Page>
.NET
Framework 3.0 클래스 라이브러리 사용WMC 용 WPF 응용 프로그램은 컨트롤에만 제한되지 않습니다. WPF 응용 프로그램에서는.NET Framework 를 그 외의 기능을 위해서 활용할 수도 있어 독립 실행형이나 브라우저 호스트의 WPF 응용 프로그램과 같은 코드를 사용할 수 있습니다.
예를 들어, WMC 에서 호스트 되는 응용 프로그램의 데이터를 보존하거나 로드하는 코드는 비 WMC 응용 프로그램의 코드와 같고, 보안의 제약도 동일합니다. ( 「Windows Presentation Foundation 보안」을 참조해 주세요).따라서, WMC 에 의해서 호스트되는 응용 프로그램이 로컬 디스크 기입을 실행할 수 있을지는 응용 프로그램이 실행 된 장소에 의해서 정해집니다.
안전을 위해서, 응용 프로그램에서 분리 저장소를 사용하여 파일을 보관 유지할 수 있습니다.
using System; using System.ComponentModel; using System.IO; using System.IO.IsolatedStorage; using System.Xml; using System.Xml.Serialization; ... public static PlayerScore Load() { try { // Load the playerscore.xml file from isolated storage using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) using (Stream stream = new IsolatedStorageFileStream("playerscore.xml", FileMode.Open, isf)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(PlayerScore)); return (PlayerScore)xmlSerializer.Deserialize(stream); } } catch (FileNotFoundException ex) { return new PlayerScore(); } } public static void Save(PlayerScore playerScore) { // Save the playerscore.xml file to isolated storage using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) using (Stream stream = new IsolatedStorageFileStream("playerscore.xml", FileMode.Create, isf)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(PlayerScore)); xmlSerializer.Serialize(stream, playerScore); } }
WMC
매니지 API 와의 통합WMC 용 WPF 응용 프로그램은 일련의 매니지 API 를 통해서 WMC 자체의 기능과 통합할 수도 있습니다. 이러한 API 는 운영 시스템과 함께 설치되어 Microsoft.MediaCenter.dll 과 Microsoft.MediaCenter.UI.dll 라는 두 개의 어셈블리에 배포됩니다.
이러한 API 를 사용하면, 미디어 컨텐츠 검사, 구성, 재생 등 WMC 가 다방면에 걸친 서비스와 통합가능합니다. 자세한 내용은 WMC SDK 를 참조해 주세요.
이러한 기능은 응용 프로그램의 사용자 경험과 WMC의 새로운 통합을 구현합니다. 예를 들어, WPF 응용 프로그램에서는 사용자에게 통지를 보내는데 필요한 경우에 다음과 같은 메시지 박스를 표시할 수 있습니다.
그러나, WPF의 표준 메시지 박스의 형태는 WMC 사용자 경험의 일관성이 없습니다. 다행히 WMC 매니지 API 에는 WMC 스타일의 독자적인 메시지 박스가 있습니다. 이것을 사용하기 위한 코드는 다음과 같이 됩니다.
using Microsoft.MediaCenter; ... // Get media center host and show dialog box MediaCenterEnvironment mce = Microsoft.MediaCenter.Hosting.AddInHost.Current.MediaCenterEnvironment; mce.Dialog(msg, "WordGame!", DialogButtons.Ok, 1000, true);
이렇게 하여, 다음과 같은 WMC의 대화상자가 표시됩니다.
WMC 매니지 API의 자세한 내용은 WMC SDK를 참조해 주세요.
메모
: |
|---|
|
WMC 매니지 API 를 참조하는 XBAP 실행은 XBAP이 WMC 에서 호스트된 경우 뿐입니다. |
Visual
Studio 에 의한 개발여기까지는 WMC 용 XBAP을 구축할 때 대처해야 할 프로그래밍의 중심적인 과제를 설명했습니다.
-
일반적인 XBAP 응용 프로그램을 작성한다.
-
.mcl 파일을 사용하여 WMC 로 XBAP을 실행한다.
-
XBAP 용의 WMC 테마를 작성한다.
-
WMC 매니지 API 를 참조한다.
일반적으로는 WMC 용 XBAP을 작성할 때마다 이러한 과제가 있습니다. WMC SDK 와 함께 설치되는 Microsoft Visual Studio 2005 용 Media Center Application (WPF) 프로젝트 템플릿을 사용하면, WMC 용 XBAP을 작성할 때마다 이러한 요소를 다시 작성할 필요가 없습니다.
메모
: |
|---|
|
WMC 프로젝트 템플릿은 Visual Studio 2005 로 "Fidalgo" 가 두 가지 모두가 설치 된 경우에만 설치됩니다. |
Media Center Application (WPF) 프로젝트 템플릿에서 작성하는 Visual Studio 2005 프로젝트에는 이러한 요소가 기본값에 포함되어 있습니다.
새로운 Media Center 응용 프로그램 (WPF)을 작성하려면, 다음 순서로 실행합니다.
-
Visual Studio 2005 를 엽니다.
-
[Microsoft Visual Studio], [File], [New], [Project], [Visual C#], [.NET Framework 3.0], [Media Center Application (WPF)]의 순서로 클릭합니다.
이 프로젝트 템플릿의 기본값에서 생성된 주요 아이템은 다음과 같습니다.
-
readme.txt 파일.WPF 용 XBAP의 구축과 디버그에 관한 유용한 정보가 포함되어 있습니다.
-
WMC 매니지 어셈블리 참조.
-
MediaCenterTheme.xaml 파일.기본값의 페이지 (Page1.xaml)에 기본값으로 적용되는 WMC 스타일의 완전한 집합을 포함한 리소스 사전입니다.
-
표준 XBAP 출력과 함께 생성된 .mcl 파일.
Microsoft Visual Basic 용의 프로젝트 템플릿도 있습니다.
프로젝트의 디버그
WMC 호스트내의 XBAP을 Visual Studio 2005에서 디버그하려면, 다음 순서로 실행합니다.
-
솔루션 탐색기로 프로젝트 이름을 오른쪽 클릭하여, [Properties], [Debug]의 순서로 클릭합니다.
-
[Start Program] 을 c:\windows\system32\presentationhost.exe 로 설정합니다.
-
[Command Line Arguments] 를 -debug 로 설정합니다.
-
[Microsoft Visual Studio], [Debug], [Start Debugging]의 순서로 클릭하고 (또는 F5 키를 누르고), 응용 프로그램을 실행합니다.
-
빌드 프로세스의 사이에 생성된. mcl 파일 (\bin\debug\assemblyname.mcl)을 더블 클릭합니다.
.mcl 파일로 지정되어 있는 응용 프로그램이 WMC 내에 실행되어 WMC 로 호스트됩니다.
WMC
용 WPF 응용 프로그램 설치Visual Studio 2005 를 사용하는 이점의 한가지는 Microsoft Windows Installer 응용 프로그램 (.msi 파일)의 작성을 지원하는 기능입니다. msi 파일은 WPF 응용 프로그램을 WMC 클라이언트 컴퓨터에 배포하는데 편리합니다.
WordGame! 용무의 단순한 Windows Installer 응용 프로그램은 다음의 순서에 따라서 작성 됩니다.
-
Visual Studio 2005의 솔루션 탐색기로 XBAP 솔루션을 오른쪽 클릭하여, [Add], [New Project]의 순서로 클릭합니다.
-
[Project types]의 목록으로 [Other Project Types], [Setup and Deployment]의 순서로 클릭합니다.
-
[Templates]의 목록으로 [Setup Project] 또는 [Setup Wizard] 를 클릭합니다 ([Setup Wizard] 를 선택하면, 작성되는 Windows Installer 설치 프로젝트의 초기 구성을 가이드 하는 마법사가 표시됩니다).
-
새로운 Windows Installer 프로젝트를 오른쪽 클릭하여, [Add], [File]의 순서로 클릭하고, 다음 파일을 선택합니다.
-
WordGameWMC.mcl
-
WordGameWMC.exe
-
WordGameWMC.exe.manifest
-
WordGameWMC.xbap
-
WordList.txt
-
Keyboard.dll
-
-
[File System] 탭으로 [User's Desktop] 을 클릭합니다.
-
파일의 목록을 오른쪽 클릭하여, [Create Shortcut to User's Desktop] 를 클릭합니다.
-
[Application Folder], [WordGameWMC.mcl]의 순서로 클릭합니다.
-
Windows Installer 프로젝트를 다시 빌드 합니다.
Windows Installer 프로젝트가 빌드 되면, 빌드 출력 폴더에 .msi 파일이 생성됩니다. 이 파일을 클라이언트 컴퓨터에 복사하여 실행하면, 응용 프로그램이 설치됩니다. 기본값 설치에서는 다음 형식에 따라서 폴더가 작성됩니다.
c:\program files\CompanyName\ApplicationName\Application Files
Windows Installer 프로젝트의 구성시에 선택한 모든 파일이 Windows Installer 프로젝트에 의해 선택된 의존 어셈블리와 함께 이 폴더에 복사됩니다.
WordGameWMC.mcl의 바로 가기 아이콘도 데스크톱에 작성됩니다. 이것을 더블 클릭 또는 참조하고, WMC 내에 응용 프로그램을 실행 할 수 있습니다.
메모
: |
|---|
|
생성된다 .mcl 파일에 추가된다 .xbap 파일에의 패스가 설치에 대해서 정확하게 되도록 하려면, 응용 프로그램 자체의 프로젝트 파일을 수동으로 업데이트해야 합니다. |
이 설치는 WMC 용 WPF 응용 프로그램의 Windows Installer를 작성할 때, 기본을 이해하기 위한 데모입니다.
실제의 WMC 용 WPF 응용 프로그램에서는 다른 설치 방법을 사용해야 합니다.
첫번째, 실제의 Web 서버로 호스트 되는 WPF 응용 프로그램 링크를 포함한 HTML 파일을 설치해야 합니다. 응용 프로그램을 Web 서버로 호스트 하면, 응용 프로그램의 새 버전을 작성하여, 그것을 공개하고, 클라이언트 컴퓨터에 다운로드 되도록 할 수 있습니다. 사용자가 응용 프로그램을 다시 설치할 필요는 없습니다.
두번째, .mcl 파일은 사용하지 말아야 합니다. 대신에 WMC API의 MediaCenter.RegisterApplication을 호출하는 Windows Installer 또는 명령줄 유틸리티의 RegisterMceApp.exe를 실행합니다. 자세한 내용은 WMC SDK 를 참조해 주세요.
메모
: