На этом шаге мы рассмотрим алгоритм добавления свойств в итрефейс компонента.
Свойства - это открытые члены-данные СОМ-объекта. Языки, поддерживающие СОМ-свойства, могут получать сведения о свойствах объектов и задавать их значения практически так же, как задаются значения переменных-членов класса C++. К примеру, следующий код на Visual Basic показывает в информационном окне текущее значение свойства Key и присваивает ему новое значение 3:
Dim comobj As Encoder Set comobj = New Encoder MsgBox comobj.Key comobj.Key = 3
Поскольку интерфейс COM - это по существу таблица указателей на функции, в C++ СОМ-свойства реализованы в виде пары функций - одна из них задает значение свойства, а другая служит для его считывания. Мастер Add Property to Interface Wizard автоматически создает методы Get и Put для каждого из определенных Вами свойств, хотя Вы вправе отказаться от реализации метода Put, генерируя таким образом свойство только для чтения.
Рис.1. Окно Add Property to Interface
В классе Вашего СОМ-объекта Вы должны определить переменную-член для хранения данных. А также написать реализацию методов Get и Put для помещения (извлечения) данных из/в переменную-член.
Рис.2. Добавление переменнуой-члена m_Кеу типа short
m_Key = 1;
Рис.3. Содержание конструктора
STDMETHODIMP CEncoder::get_Key(short *pVal) { *pVal = m_Key; return S_OK; } STDMETHODIMP CEncoder::put_Key(short newVal) { newVal = newVal > 5 ? 5 : newVal; newVal = newVal < -5 ? -5 : newVal; m_Key = newVal; return S_OK; }
Рис.4. Функции get_Key() и put_Key()
Обратите внимание на простой код проверки границ в функции put_Key().
Текст этого приложения можно взять здесь (25,5 Кб).
На следующем шаге мы рассмотрим реализацию методов компонента.