基于silerlight for embedd 视频播放器的之一的问题

时间: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. 中文显示的问题没有解决。

原文地址:https://www.cnblogs.com/pengxinglove/p/1817293.html