我使用Microsoft.DirectX.AudioVideoPlayback写了一个小程序,用来顺序,循环播放一些视频文件,并且是全屏播放。我的问题是,尽管我设置了属性Fullscreen=true; 但是播放的时候还是会跳到非全屏的窗口。郁闷!!!代码如下:using System;
using System.Windows.Forms;
using Microsoft.DirectX.AudioVideoPlayback;namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private Video myVideo;
        private Video myVideo1;        private int currentIndex = 0;
        private bool PrimaryVideoPlaying = true;        private string[] pl = { "c:\\media\\a.mpg", "c:\\media\\b.mpg", "c:\\media\\c.mpg" };
        public Form1()
        {
            InitializeComponent();            PlayList();
        }        private void PlayList()
        {
            currentIndex = 0;
            if (pl.Length > 0)
            {
                PlayMedia(pl[currentIndex]);
            }
        }        private void PlayMedia(string fileName)
        {
            try
            {
                if (PrimaryVideoPlaying)
                {
                    PrimaryVideoPlaying = false;                    if (myVideo1 != null)
                        myVideo1.Dispose();                    myVideo1 = new Video(fileName);
                    myVideo1.Ending += new EventHandler(myVideo_Ending);
                    myVideo1.Owner = this;
                    myVideo1.Play();
                    myVideo1.Fullscreen = true;
                }
                else
                {
                    PrimaryVideoPlaying = true;                    if (myVideo != null)
                        myVideo.Dispose();                    myVideo = new Video(fileName);
                    myVideo.Ending += new EventHandler(myVideo_Ending);
                    myVideo.Owner = this;
                    myVideo.Play();
                    myVideo.Fullscreen = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }        void myVideo_Ending(object sender, EventArgs e)
        {
            currentIndex = (currentIndex + 1) % pl.Length;            ((Video)sender).Ending -= new EventHandler(myVideo_Ending);            PlayMedia(pl[currentIndex]);
        }
    }
}

解决方案 »

  1.   

    奇怪,没看出哪有问题
    这个只能仔细调试下了,一步一步跟踪,看看哪里myVideo1.Fullscreen = false了
      

  2.   

    这是directX的一个bug吧每次换片的时候,会重新load那个owner,因此原来的fullscreen状态就会被打断。试试,直接把那个owner的窗口设置为全屏,没有toolbar什么的,这样的话,不管你片子怎么换,owner都是全屏的,那里面的片子也就全屏的啦。
      

  3.   

    另外一个问题是,我在播放的画面上面双击鼠标,如何能响应到这个事件?我尝试在那个owner的窗体上的鼠标双击事件里面写,但是鼠标的双击事件没有被响应。我看了video的所有事件,没有响应键盘或者鼠标的事件。
    我应该怎么实现?谢谢