C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 12. Свойства перечисляемго типа / Библиотека ATL / Visual C++

Visual C++. ATL
Урок 12. Свойства перечисляемго типа

На этом уроке мы посмотрим, как можно добавлять в компонент свойства перечисляемого типа. Такие свойства могут принимать значения только из определеного набора. Типичный пример такого типа - это логический. Переменная или свойство логического типа может принимать только одно из двух значений - true или false. Наши свойства тоже смогут принимать значения только из некоторого набора, который будет задан нами.

Приступаем к коду.

Мы добавим в нашш компонент свойство, которое сможет принимать одно из трех значений: red, yellow или green. Для этого мы должны сделать несколько шагов.

Во-первых, мы должны добавить объявление соответствующего типа в idl-файл нашего проекта. Для раскрытия этого файла проще всего сделать двойной щелчок в окне ClassView на имени внешнего интерфейса, предназначенного для добавления свойств и методов. На самом верху этого файла, сразу после inclide'ов и import'ов добавьте строки для объявления соответствующего типа:

import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"

enum MyColors{
    Red,
    Yellow,
    Green
};

Далее действуем стандартным способом - а иемнно добавляем переменную только что оперделенного нами типа enum MyColors в класс компонента:

    ...
    enum MyColors m_Color;
    ...

Далее добавляем через внешний интерфейс свойство Color (имя может быть произвольное) типа enum MyColors (обратите внимание, что в качестве типа мы должны указать именно enum MyColors, а не просто MyColors):

Добавление свойства

Разумеется, мы должны внести изменения и код для чтения и записи добавленного свойства:

STDMETHODIMP CMyEnum::get_Color(enum MyColors *pVal)
{
    // TODO: Add your implementation code here
    *pVal = m_Color;
    return S_OK;
}

STDMETHODIMP CMyEnum::put_Color(enum MyColors newVal)
{
    // TODO: Add your implementation code here
    m_Color = newVal;
    return S_OK;
}

И, наконец, в конструкторе компонента добавьте строку для инициализации нашего свойства:

      CMyEnum()
      {
        m_Color = Red;
      }

Компилируем наш проект (F7). Испытываем его в VB-проекте (как описано в уроке 8). После размещения нашего компонента на форме Visual Basic'а в окне Properties мы увидим наше свойство с редактором для него в виде combobox'а:

Свойства перечисляемго типа

И еще раз обратите внимание, что везде в C++-коде мы должны использовать enum MyColors, а не просто MyColors.