Исходный код
//---------------------------------------------------------
// Показывает информацию о пользователе
//---------------------------------------------------------
// получить диалог выбора пользователей
CComPtr<ITDMSDialogs> pDialogs;
CheckError(pApp->get_Dialogs(&pDialogs));
CComPtr<ITDMSSelectUserDlg> pSelectUserDlg;
CheckError(pDialogs->get_SelectUserDlg(&pSelectUserDlg));
// показать диалог
VARIANT_BOOL bResult;
CheckError(pSelectUserDlg->Show(&bResult));
if (bResult) {
// получить выбранного пользователя
CComPtr<ITDMSUser> pUser;
CheckError(pSelectUserDlg->get_User(&pUser));
TDMSUserType type;
BSTR bsSysName, bsDescription, bsFirstName, bsLastName, bsMiddleName, bsMail, bsPhone;
CheckError(pUser->get_Type(&type));
CheckError(pUser->get_SysName(&bsSysName));
CheckError(pUser->get_Description(&bsDescription));
CheckError(pUser->get_FirstName(&bsFirstName));
CheckError(pUser->get_LastName(&bsLastName));
CheckError(pUser->get_MiddleName(&bsMiddleName));
CheckError(pUser->get_Mail(&bsMail));
CheckError(pUser->get_Phone(&bsPhone));
VARIANT varPosition, varDepartment;
CheckError(pUser->get_Position(&varPosition));
CheckError(pUser->get_Department(&varDepartment));
char sLFM[256];
sprintf(sLFM, "%s %s %s", CSW2A(bsLastName), CSW2A(bsFirstName), CSW2A(bsMiddleName));
// вывести информацию о пользователе
char sInfo[2048];
sprintf(sInfo, "Тип: d\nСистемное имяs\nОписание: s\nФИОs\nДолжность: s\nОтделs\nE-Mail: s\nТелефонs ",
type, CSW2A(bsSysName), CSW2A(bsDescription), sLFM, CSW2A(varPosition.bstrVal), CSW2A(varDepartment.bstrVal), CSW2A(bsMail), CSW2A(bsPhone));
SysFreeString(bsSysName);
SysFreeString(bsDescription);
SysFreeString(bsFirstName);
SysFreeString(bsLastName);
SysFreeString(bsMiddleName);
SysFreeString(bsMail);
SysFreeString(bsPhone);
VariantClear(&varPosition);
VariantClear(&varDepartment);
MessageBox(NULL, sInfo, "Информация о пользователе", MB_OK | MB_ICONINFORMATION);
}