ObjectARX, AutoCAD. Среда программирования библиотеки C++




Категоризировать свойства


Вы не можете хотеть, чтобы все ваши свойства обнаружились под “Общей” категорией, так что эта следующая секция демонстрирует, как использовать встроенные категории.

1 Идут к Представлению Класса в IDE Visual C++, щелкают правой кнопкой мыши на заказном интерфейсе примитива (типа IAsdkSquareWrapper), и выбирают AddProperty. Добавьте свойства для квадратного центра и номера ID.

2 Затем изменяют образование из объекта COM, чтобы включить IOPMPropertyExtensionImpl и IOPMPropertyExpander:

public IOPMPropertyExtensionImpl<CAsdkSquareWrapper>,

public IOPMPropertyExpander

3 Добавляют интерфейсы к карте интерфейса COM:

COM_INTERFACE_ENTRY(IOPMPropertyExtension)

COM_INTERFACE_ENTRY(ICategorizeProperties)

COM_INTERFACE_ENTRY(IPerPropertyBrowsing)

COM_INTERFACE_ENTRY(IOPMPropertyExpander)

4 Добавляют объявление для интерфейса IOPMPropertyExtension:

// IOPMPropertyExtension

//

BEGIN_OPMPROP_MAP()

OPMPROP_ENTRY(0, 0x00000001, PROPCAT_Data, \

0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")

OPMPROP_ENTRY(0, 0x00000003, PROPCAT_Geometry, \

0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")

END_OPMPROP_MAP()

5 Добавляют следующий две подставляемых функции к классу:

STDMETHOD(GetCategoryName)(

THIS_

/* [in] */ PROPCAT propcat,

/* [in] */ LCID lcid,

/* [out] */ BSTR* pbstrName)

{return S_FALSE;}

virtual HINSTANCE GetResourceInstance()

{

return _Module.GetResourceInstance();

}

6 Добавляют объявления для следующих функций:

STDMETHOD(GetElementValue)(

/* [in] */ DISPID dispID,

/* [in] */ DWORD dwCookie,

/* [out] */ VARIANT * pVarOut) ;

// Used for property expansion (currently variant types)

//

STDMETHOD(SetElementValue)(

/* [in] */ DISPID dispID,

/* [in] */ DWORD dwCookie,

/* [in] */ VARIANT VarIn) ;

// Used for property expansion (currently variant types)

//

STDMETHOD(GetElementStrings)(

/* [in] */ DISPID dispID,

/* [out] */ OPMLPOLESTR __RPC_FAR *pCaStringsOut,

/* [out] */ OPMDWORD __RPC_FAR *pCaCookiesOut) ;




Содержание  Назад  Вперед