Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки по Visual C++ (MFC, платформа .NET)


Информационный Канал Subscribe.Ru

Уроки по Visual C++.NET. Рассылки сайта progs.biz
Выпуск № 84
 
Начало > Visual C++ 6 > ATL > Урок 12

М. Фленов. Программирование на C++ глазами хакера.
М. Фленов. Программирование на C++ глазами хакера
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 12.

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.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.lessonsfromai
Отписаться

В избранное