Исходный код
//---------------------------------------------------------
// Добавляет файл к объекту
//---------------------------------------------------------
// выбрать объект
CComPtr<ITDMSObject> pObject;
if (SelectObject(&pObject, pApp, NULL))
{
// получить диалог открытия файла
CComPtr<ITDMSDialogs> pDialogs;
CheckError(pApp->get_Dialogs(&pDialogs));
CComPtr<ITDMSFileDlg> pFileDialog;
CheckError(pDialogs->get_FileDlg(&pFileDialog));
CheckError(pFileDialog->put_OpenFileDialog(TRUE));
// расширение по умолчанию
BSTR bsDefExt = A2BSTR(".dwg");
CheckError(pFileDialog->put_DefaultExt(bsDefExt));
SysFreeString(bsDefExt);
// фильтр
BSTR bsFilter = A2BSTR("Drawing (*.dwg)|*.dwg|DXF (*.dxf)|*.dxf|All Files (*.*)|*.*||");
CheckError(pFileDialog->put_Filter(bsFilter));
SysFreeString(bsFilter);
// parent window
CheckError(pFileDialog->put_ParentWindow((long)GetActiveWindow()));
// показать диалог
VARIANT_BOOL bResult;
CheckError(pFileDialog->Show(&bResult));
if (bResult)
{
// получить тип файла
CComPtr<ITDMSFileDefs> pFileDefs;
CheckError(pApp->get_FileDefs(&pFileDefs));
CComPtr<ITDMSFileDef> pFileDef;
// первый
VARIANT var;
var.vt = VT_I4;
var.lVal = 0;
CheckError(pFileDefs->get_Item(var, &pFileDef));
// по имени
//VARIANT var;
//var.vt = VT_BSTR;
//var.bstrVal = A2BSTR("FILE_PT");
//CheckError(pFileDefs->get_Item(var, &pFileDef));
//VariantClear(&var);
// получить файлы объекта
CComPtr<ITDMSFiles> pFiles;
CheckError(pObject->get_Files(&pFiles));
// создать новый файл
CComPtr<ITDMSFile> pFile;
var.vt = VT_DISPATCH;
CheckError(pFileDef->QueryInterface(IID_IDispatch, (void**)&var.pdispVal));
CheckError(pFiles->Create(var, &pFile));
VariantClear(&var);
// имя файла
BSTR bsFileName;
CheckError(pFileDialog->get_FileName(&bsFileName));
// поднять файл в базу TDMS
CheckError(pFile->CheckIn(bsFileName));
SysFreeString(bsFileName);
}
}