An Item Type property has several attributes that can be set, along these lines...
CustomPropertyP p1 = ecItemType.AddProperty (L"prop-name", false);
if (nullptr != p1)
p1->SetType (prop.CustomPropertyType ());
An attribute that is not provided is Read-Only. That is, a user should not be able to change that property's value in the user interface. My idea is for a