Re[2]: Создание ActiveX, перечисляемое свойство (типа enum)
От: _PRIZRAK_  
Дата: 14.12.06 01:11
Оценка:
Разобрался!

Вот это помогло. Не уверен, что всё правильно делаю. Тем не менее всё работает.

Расскажу как делал.

1. Пусть для примера мы создали новый компонент под названием "EnumPropCntrl".

2. Добавляем в компонент с помощью мастера (или без него) свойство типа short. Назовём наше свойство "MyProp", а переменную — "m_MyProp".

3. Как обычно, пишем код
void CEnumPropCntrlCtrl::DoPropExchange(CPropExchange* pPX)
{
    ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
    COleControl::DoPropExchange(pPX);

    PX_Short(pPX, "MyProp", m_MyProp, 0);
}
Конечно, вместо нуля должна быть константа, но для примера пусть будет так.

4. Открываем файл с расширение odl и после строк
importlib(STDOLE_TLB);
importlib(STDTYPE_TLB);
пишем что-нибудь вроде этого
    [
        uuid(C5F2743B-8E85-4423-BCC7-9576559A601B), 
        version(1.0)
    ]
    typedef enum tagTMyProp 
    {
        mpValue0, 
        mpValue1, 
        mpValue2
    } TMyProp;
Затем в том же файле строчку
[id(1)] short MyProp;
заменяем на
[id(1)] TMyProp MyProp;

Вот и всё! Теперь разместив где-нибудь наш компонент, мы обнаружим у него свойство "MyProp". Значение "MyProp" будет задаваться путем выбора из выпадающего списка.



Vi2, спасибо за подсказки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.