Синхронизируйте функции компонента

В этом разделе описываются функции, которые предоставлены компонентами часов. Эти функции описаны с точки зрения Панели инструментов Фильма, объект, который, наиболее вероятно, вызовет компоненты часов. При разработке компонента часов компонент должен вести себя, как описано здесь.

Этот раздел был разделен на следующие темы:

Если Вы разрабатываете приложение, использующее компоненты часов, необходимо считать следующий раздел, Получение Текущего времени.

При разработке компонента часов необходимо быть знакомы со всеми функциями, описанными в этом разделе.

Можно использовать следующие константы для обращения к кодам запроса для каждой из функций, которые должен поддерживать компонент часов:

/* constants to refer to request codes for supported functions */
enum {
    kClockGetTimeSelect                     = 0x1,  /* ClockGetTime */ 
    kClockNewCallBackSelect                 = 0x2,/* ClockNewCallBack */
    kClockDisposeCallBackSelect             = 0x3,/* ClockDisposeCallBack */
    kClockCallMeWhenSelect                  = 0x4,/* ClockCallMeWhen */
    kClockCancelCallBackSelect              = 0x5,/* ClockCancelCallBack */
    kClockRateChangedSelect                 = 0x6,/* ClockRateChanged */
    kClockTimeChangedSelect                 = 0x7,/* ClockTimeChanged */
    kClockSetTimeBaseSelect                 = 0x8,/* ClockSetTimeBase */
    kClockStartStopChangedSelect            = 0x9,/* ClockStartStopChanged */
    kClockGetRateSelect                     = 0xA /* ClockGetRate */
};

Получение текущего времени

Компоненты часов обеспечивают единственную функцию, ClockGetTime, это позволяет Панели инструментов Фильма получать текущее время.

Используя функции обратного вызова

Приложения, использующие основы времени QuickTime, могут определить функции обратного вызова, связанные с определенной основой времени. Приложения могут тогда использовать эти функции обратного вызова для выполнения действий, инициированных временными событиями, такими как определенное достигаемое время или указанный достигнутый уровень. Функции основы времени Панели инструментов Фильма взаимодействуют с компонентами часов для планирования вызова этих функций обратного вызова; Ваш компонент часов ответственен за вызов функции обратного вызова в ее запланированное время.

Функции, описанные в этом разделе, вызваны Панелью инструментов Фильма для поддержки приложений, определяющих функции обратного вызова основы времени. Обратите внимание на то, что Ваш компонент часов может делегировать свои события обратного вызова к другому компоненту путем вызова Менеджера компонентов DelegateComponent функция.

ClockNewCallBack функция позволяет Вашему компоненту часов выделять память для поддержки нового события обратного вызова. Когда приложение отбрасывает событие обратного вызова, Панель инструментов Фильма вызывает Ваш компонент часов ClockDisposeCallBack функция.

Панель инструментов Фильма вызывает Ваш компонент часов ClockCallMeWhen функционируйте, когда приложение захочет запланировать событие обратного вызова. Когда функция обратного вызова должна быть вызвана для обслуживания события, Панель инструментов Фильма вызывает компонент ClockCancelCallBack функционируйте так, чтобы можно было удалить событие обратного вызова из списка запланированных событий.

Управление временем

Компоненты часов обеспечивают несколько функций, позволяющих Панели инструментов Фильма предупреждать Ваш компонент к изменениям в его среде. Три из этих функций, ClockTimeChanged, ClockRateChanged, и ClockStartStopChanged, связаны с функциями обратного вызова приложения и помогают Вашему компоненту определить, вызвать ли функцию обратного вызова. Четвертое, ClockSetTimeBase функционируйте, говорит Вашему компоненту часов об основе времени, что это поддерживает.

Функции поддержки часов панели инструментов фильма

Панель инструментов Фильма обеспечивает много функций поддержки для компонентов часов. Все эти функции помогают Вашему компоненту управлять своими связанными функциями обратного вызова. Ваш компонент часов может вызвать любую из этих функций во время прерывания. Эти функции должны только быть вызваны компонентами часов:

Типы данных

Компонентная структура данных часов является частной структурой данных. Программы, использующие Ваш компонент часов, никогда не изменяют содержание этой структуры данных непосредственно. Ваш компонент часов обеспечивает функции, позволяющие программам использовать эту структуру данных.

Структура заголовка обратного вызова указывает функцию обратного вызова для работы. Ваше приложение может получить идентификаторы функции обратного вызова путем вызова ее компонента часов ClockNewCallBack функция.

QTCallBackHeader тип данных определяет структуру заголовка обратного вызова.

struct QTCallBackHeader {
    long    callBackFlags;    /* flags used by clock component to communicate
                                 scheduling data about callback to QuickTime */ 
    long    reserved1;        /* reserved for use by Apple */
    char   qtPrivate[40];    /* reserved for use by Apple */
};

Поле

Описание

callBackFlags

Содержит флаги, которые Ваш компонент может использовать для передачи информации о планировании о событии обратного вызова на Панель инструментов Фильма. Эта информация о планировании говорит Панель инструментов Фильма, во сколько основные события, которые Ваш компонент часов должен знать о том, для поддержки события обратного вызова.

reserved1

Зарезервированный для использования Apple.

qtPrivate

Зарезервированный для использования Apple.

Следующие флаги определяются для callBackFlags поле (все другие флаги должны быть установлены в 0):

enum {
    qtcbNeedsRateChanges = 1,       /* clock needs to know about rate
    qtcbNeedsTimeChanges = 2  /* clock needs to know about time
    qtcbNeedsStartStopChanges = 4   /* clock needs to know about
                                       time base changes */ 
};

Флаг

Описание

qtcbNeedsRateChanges

Указывает, что Ваш компонент часов должен знать об изменениях уровня. При установке этого флага в 1 QuickTime вызывает функцию ClockRateChanged каждый раз, когда уровень времени события обратного вызова базирует изменения.

qtcbNeedsTimeChanges

Указывает, что Ваш компонент часов должен знать об изменениях времени. При установке этого флага в 1 Панель инструментов Фильма вызывает функцию ClockTimeChanged каждый раз, когда программа изменяет временную стоимость основы времени, или когда временная стоимость изменяется суммой, отличающейся со времени уровень основы.

qtcbNeedsStartStopChanges

Указывает, что Ваш компонент часов должен знать во время запуск основы и изменения остановки. При установке этого флага в 1 Панель инструментов Фильма вызывает Ваш ClockStartStopChanged функционируйте каждый раз, когда программа изменяет запуск или время остановки основы времени.

Типы компонента для часов

Apple определил значение типа и много значений подтипа для компонентов часов. Все компоненты часов имеют значение типа компонента 'clok'. Значение подтипа компонента указывает тип часов. Можно использовать следующие константы, чтобы указать, что они вводят и выделяют подтипы в значениях.

#define clockComponentType        'clok'     /* clock component type */
#define systemTickClock           'tick'     /* system tick clock */
#define systemSecondClock         'seco'     /* system seconds clock */
#define systemMillisecondClock    'mill'     /* system millisecond clock */
#define systemMicrosecondClock    'micr'     /* system microsecond clock */