C#中的QuickTime电影控制器处理程序

3

我花了一些时间来弄清楚如何在C#应用程序中嵌入QuickTime播放器。当我对我的成功感到非常高兴时,规格发生了变化,我们的播放器需要自定义控件(而不是来自Apple QuickTime Control 2.0的那些控件)。

我搜索了很多示例或文档,但像往常一样,没有来自Apple的文档。我认为这很简单,就像这样:

if (m_QTPlayer.Movie != null)
{
   m_QTPlayer.QuickTime.QTEvent += new 
          QTOLibrary._IQTObjectEvents_QTEventEventHandler(QuickTime_QTEvent);
   m_QTPlayer.Movie.QTEvent += new               
          QTOLibrary._IQTObjectEvents_QTEventEventHandler(Movie_QTEvent);
 }

但是,出乎意料的是,在我的Movie_QTEvent方法中没有收到任何事件。有什么我忽略的地方吗?很难相信这是不可能的,但我不知道如何做到。谢谢,Mosu'
1个回答

2

尽管事情并不如我所希望的那样好,但我还是找到了答案。

以下是一些自解释的代码:

private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            axQTControl1.URL = ofd.FileName;

            axQTControl1.Movie.EventListeners.Add(QTEventClassesEnum.qtEventClassAudio,
                QTEventIDsEnum.qtEventAudioBalanceDidChange, null, null);

            axQTControl1.Movie.EventListeners.Add(QTEventClassesEnum.qtEventClassTemporal,
                QTEventIDsEnum.qtEventTimeWillChange, null, null);

            axQTControl1.Movie.EventListeners.Add(QTEventClassesEnum.qtEventClassAudio,
                QTEventIDsEnum.qtEventAudioVolumeDidChange, null, null);

            axQTControl1.Movie.EventListeners.Add(QTEventClassesEnum.qtEventClassApplicationRequest,
                QTEventIDsEnum.qtEventAudioBalanceDidChange, null, null);

            axQTControl1.Movie.EventListeners.Add(QTOLibrary.QTEventClassesEnum.qtEventClassProgress, 
                QTOLibrary.QTEventIDsEnum.qtEventExportProgress, null, null);

            axQTControl1.Movie.EventListeners.Add(QTEventClassesEnum.qtEventClassStateChange,
                QTEventIDsEnum.qtEventMovieDidEnd, null, null);

            axQTControl1.Movie.EventListeners.Add(QTEventClassesEnum.qtEventClassStateChange,
                QTEventIDsEnum.qtEventRateWillChange, null,  null);                                               

        }
    }

    private void axQTControl1_QTEvent(object sender, AxQTOControlLib._IQTControlEvents_QTEventEvent e)
    {
        Console.WriteLine(e.eventID.ToString());
    }

可以在这里找到正确的枚举组合信息: http://books.google.ro/books?id=WwzK0JopNNAC&pg=PA96&lpg=PA96&dq=qtEventRateWillChange&source=bl&ots=hMWiINDDrX&sig=egFhnlvGX_vJZECx-5HXwxSAioc&hl=ro&ei=jMeQS8mBOKTYmwO2092uCw&sa=X&oi=book_result&ct=result&resnum=3&ved=0CA8Q6AEwAg#v=onepage&q=qtEventRateWillChange&f=false

如果链接无法打开,请在 Google Books 上搜索: “QuickTime for .NET and COM developers by John Cromie”

我一直在希望有一种简单的方法来创建电影时间轴,但我一直没有找到。希望有人能在这里发布。

谢谢, Mosu'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接