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 руб./мес


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




 Урок 7. Перечисляемые свойства / ATL библиотека / Visual C++ .NET

Visual C++.NET. Библиотека ATL
Урок 7. Перечисляемые свойства

Сейчас мы с вами посмотрим, как можно добавлять в компонент перечисляемые свойства. В средах программирования, поддерживающих окна свойств (например, в VB или в Delphi) такие свойства будет видны в виде ниспадающего списка:

Перечисляемое свойство

Для того, чтобы определить такое свойство мы должны, во-первых, задать новый тип данных с помощью enum. Делаем мы это в файле MyFirstATLh. нашего проекта, сразу после include'ов (для открытия этого файла можно сделать двойной щелчок на интерфейсе IMyFirstATL на вкладке Class View):

// MyFirstATL.h : Declaration of the CMyFirstATL
#pragma once
#include "resource.h"       // main symbols
#include <atlctl.h>
[
    export, library_block,
    uuid("DCB60A0A-919F-4864-AEC6-FED1519F53A6")
]
enum MyColors
{
    Red=0,
    Yellow=1,
    Blue=2
};

Тут мы задали перечисляемы тип MyColors, который может принимать три значения - Red, Yellow и Blue. Не забудьте добавить строки

[
    export, library_block,
    uuid("DCB60A0A-919F-4864-AEC6-FED1519F53A6")
]
...

GUID (у нас это DCB60A0A-919F-4864-AEC6-FED1519F53A6) у вас будет свой. Можно взять его любой, важно, чтобы он был уникален.

Обратите внимание, что наше перечисление MyColors появится на вкладке Class View:

Перечисление на вкладке Class View

Теперь добавляем свойство в интерфейс IMyFirstATL. Для этого щелкаем на нем правой кнопкой мыши и выбираем Add->Add Property. В окне "Add Property Wizard - MyATL" задаем тип свойства как enum MyColors, имя - как SomeColor:

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

Нажимаем на Finish для закрытия окна.

Теперь добавим в класс CMyFirstATL переменную для хранения свойства перечисляемого типа. Для этого желкаем на классе (на вкладке Class View правой кнопкой мыши и выбираем из контекстного меню Add->Add Variable), после чего в окне "Add Member Variable Wizard - MyATL" задаем тип доступа как public, имя переменной - как m_Color и тип - как short:

Добавление переменной в класс

Нажимаем на Finish для закрытия окна.

Теперь остается добавить код для реализации свойств в классе нашего компонента. Для этого найдите созданные заготовки для функций put_SomeColor и get_SomeColor и изменитье их следующим образом:

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

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

Все, можно компилировать (Ctrl+Shift+B) и смотреть, как будет выглядеть новое свойство SomeColor в тестовом проекте на VB.NET. А выглядеть оно будет, как и положено - ниспадающим списком (как на первом рисунке нашего урока). Также все три возможные значения будут появлятся и в подсказках при наборе кода:

Перечисляемые свойства в коде