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

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


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

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



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

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.



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

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




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



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


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