Исходный текст
//---------------------------------------------------------
// Показывает диалог выбора объекта.
// Возвращает: FALSE - если пользователь выбрал "Отмена".
//---------------------------------------------------------
BOOL SelectObject(ITDMSObject* *ppObject, ITDMSApplication* pApp, ITDMSObjects* pSelectFromObjects)
{
// получить диалог выбора объекта
CComPtr<ITDMSDialogs> pDialogs;
CheckError(pApp->get_Dialogs(&pDialogs));
CComPtr<ITDMSSelectObjectDlg> pSelectObjectDlg;
CheckError(pDialogs->get_SelectObjectDlg(&pSelectObjectDlg));
// выбрать из указанных объектов
if (pSelectFromObjects != NULL)
CheckError(pSelectObjectDlg->put_SelectFromObjects(pSelectFromObjects));
// показать диалог
VARIANT_BOOL bResult;
CheckError(pSelectObjectDlg->Show(&bResult));
if (!bResult)
return FALSE;
// получить первый выбранный объект
CComPtr<ITDMSObjects> pObjects;
CheckError(pSelectObjectDlg->get_Objects(&pObjects));
VARIANT varItem;
varItem.vt = VT_I4;
varItem.lVal = 0;
CheckError(pObjects->get_Item(varItem, ppObject));
return TRUE;
}
// пример использования функции
CComPtr<ITDMSObject> pObject;
if (SelectObject(&pParentObject, pApp, NULL))
{
// пользователь выбрал объект
}
else
{
// пользователь нажал "Отмена"
}