Разобрался!
Вот это помогло. Не уверен, что всё правильно делаю. Тем не менее всё работает.
Расскажу как делал.
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, спасибо за подсказки.