Обработчик контроллера фильмов QuickTime в C # - PullRequest
3 голосов
/ 04 марта 2010

Мне потребовалось некоторое время, чтобы понять, как встроить проигрыватель QuickTime в приложение на C #.Когда я был очень доволен своим успехом, в спецификациях изменились пользовательские элементы управления (а не 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 нет событий.

Есть что-то, что ускользает от меня?Трудно поверить, что это невозможно, но я не понимаю, как это сделать.

Спасибо, Мосу '

1 Ответ

2 голосов
/ 05 марта 2010

Я нашел ответ, даже если все будет не так хорошо, как я надеялся.

Вот код, который не требует пояснений:

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());
    }

Информация о правильной комбинации Enums может быть найдена здесь: 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 для: "QuickTime для разработчиков .NET и COM Джона Кроми"

Я надеялся, что есть простой способ создать временную шкалу фильма, но до сих пор я не мог ее найтиНадеюсь, что кто-то будет и опубликовать это здесь.

Спасибо, Мосу '

...