Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

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. А выглядеть оно будет, как и положено - ниспадающим списком (как на первом рисунке нашего урока). Также все три возможные значения будут появлятся и в подсказках при наборе кода:

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

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS