时间:10:38 2010-9-3
环境:
开发环境:VS2008 +XAML2CPP.EXE + SWE 2 + BLEND 2
运行环境:WINCE 6.0 R3
硬件加速: DirectX
背景:
现在要求使用SILVERLIGHT FOR EMBEDD来开发视频播放器与音乐播放器,在PC上的SILVERLIGHT 其是有一个MediaElement控件,其是用于实现视频与音乐的播放,但是在SILVERLIHGT FOR EMBEDD 其没有此控件。所以只能自立更生了,使用DirectShow来开发。然后增加FFDSHOW来添加各种视频的解码器。
之前在MFC当中使用DIECTSHOW开发多媒体播放器的时候,DirectShow其是需要一个WIN32控件的句柄(HWND)。现在在SILVERIGHT FOR EMBEDD的开发环境当中,其是怎么样与DIRECTSHOW合作的呢。
现在的想法这样几种:
1. PAGE.XAML其解析成VISUAL HOST , 其提供了HWND,可以通过 IXRVisualHost::GetContainerHWND() ,这样此HWND 就可以用于DirectShow,应该是可以,但也没有试,但应该也是最简单,在V1.0版本当中,计划采用此法。
2. IXRWin32Control 其也是有HWND的。可以将DIRECTSHOW依附于此控件上。且此控件具有SWE内置控件的功能,如动画。此方法用于V2.0版本当中。
3. 在SILVERLIGHT FOR EMBEDD当中,其是允许创建多个VISUAL HOST 对象。可以将其中一个VISUAL HOST 用于DIRECTSHOW。暂还不知MS的SWE开发人员对于多VISUAL HOST 是怎么样管理的。希望其是以类似父子窗口的形式进行管理。 此方法暂无使用计划。
开发计划:
STEP ONE:
1. 使用BLEND 2创建UI
2. 创建工程。
3. 使用XAM2CPP.EXE 生成最基本的文件,且将此文件将添加到工程当中。
4. 编写空事件处理代码。
5. 运行。
STEP TWO:
1. 使用MVC模式重组流程。
2. 添加DIRECTSHOW 的相关文件。
3.。
问题:
fatal error LNK1112: 模块计算机类型“ARM”与目标计算机类型“X86”冲突
解法:
菜单栏:项目==> XXX属性 ==> 链接器==>命令行->输入:/MACHINE:ARM /MACHINE:THUMB
问题:
-2142830490
问题:
-2142830481
去掉ListBox 所产生的错误-2142830487
-2142830479
-2142830487
APP.XAML 当中加载资源的错误-2142830489
通过排除法,确定最后不能解析成功的原因,其与Slide ,ListBox的自定义模板有关.
<Slider Margin="53,0,48,43"
RenderTransformOrigin="0.507,0.556"
Background="#00000000"
Grid.Row="1"
VerticalAlignment="Bottom"
Height="54"
x:Name="timelineSlider"
Maximum="1"
Minimum="0"
ValueChanged="TimelineSlider_ValueChanged"
IsDirectionReversed="False"
Width="256"
/>
去IsDirectionReversed="False" 就可以解析成功 ,否则生产-2142830487 错误提示
终于查找到了另一个出错的原因如下数据绑定的XAML 语句,SILVERLIGHT FOR EMBEDD 其不支持数据绑定,所以当XAML当中出现有关于数据绑定的语句,其不像事件绑定那样过虑了,所以就会致使XAML RUNTIME 解析出错。
<DataTemplate x:Key="DataTemplate1">
<Grid Width="166">
<StackPanel Height="20" Margin="0,0,-0.999,0" VerticalAlignment="Top" Orientation="Horizontal">
<TextBlock Text="{Binding Path=SongName}" Width="55.667" TextWrapping="Wrap" Height="20" HorizontalAlignment="Left" Foreground="{StaticResource BrushThumb}"/>
<TextBlock Text="{Binding Path=SongSinger}" TextWrapping="Wrap" Width="69.667" Height="20" HorizontalAlignment="Right" Margin="41,0,0,0" Foreground="{StaticResource BrushThumb}"/>
</StackPanel>
</Grid>
</DataTemplate>
终于显示了UI,接下是后台逻辑的实现了
问题:
1. 中文显示的问题没有解决。