Исходный текст
//---------------------------------------------------------
// Показывает информацию о статусе объекта
//---------------------------------------------------------
//---------------------------------------------------------
void AddPermission (char* s, TDMSPermission perm)
{
if (perm == tdmAllow)
strcat(s, "Разрешено");
else if (perm == tdmDeny)
strcat(s, "Запрещено");
else
strcat(s, "Не определено");
}
// выбрать объект
CComPtr<ITDMSObject> pObject;
if (SelectObject(&pObject, pApp, NULL))
{
// получить статус
CComPtr<ITDMSStatus> pStatus;
CheckError(pObject->get_Status(&pStatus));
// системное имя
BSTR bsSysName;
CheckError(pStatus->get_SysName(&bsSysName));
// описание
BSTR bsDescription;
CheckError(pStatus->get_Description(&bsDescription));
// независисимый?
VARIANT_BOOL bIndependent;
CheckError(pStatus->get_Independent(&bIndependent));
// права
CComPtr<ITDMSPermissions> pPerms;
CheckError(pStatus->get_Permissions(&pPerms));
char sInfo[1024];
sprintf(sInfo, "Имя статуса: s\nОписаниеs\nНезависимый: %s\n\nПрава:",
CSW2A(bsSysName), CSW2A(bsDescription), bIndependent ? "Да" : "Нет");
SysFreeString(bsSysName);
SysFreeString(bsDescription);
TDMSPermission perm;
CheckError(pPerms->get_View(&perm));
strcat(sInfo, "\nПросмотр объекта: ");
AddPermission(sInfo, perm);
CheckError(pPerms->get_ViewFiles(&perm));
strcat(sInfo, "\nПросмотр файлов: ");
AddPermission(sInfo, perm);
CheckError(pPerms->get_Edit(&perm));
strcat(sInfo, "\nРедактирование атрибутов: ");
AddPermission(sInfo, perm);
CheckError(pPerms->get_EditFiles(&perm));
strcat(sInfo, "\nРедактирование файлов: ");
AddPermission(sInfo, perm);
CheckError(pPerms->get_EditContent(&perm));
strcat(sInfo, "\nРедактирование состава: ");
AddPermission(sInfo, perm);
CheckError(pPerms->get_Erase(&perm));
strcat(sInfo, "\nУдаление объекта: ");
AddPermission(sInfo, perm);
CheckError(pPerms->get_CreateVersion(&perm));
strcat(sInfo, "\nСоздание версии: ");
AddPermission(sInfo, perm);
MessageBox(NULL, sInfo, "Информация о статусе объекта", MB_OK | MB_ICONINFORMATION);
}