HRESULT AsdkSheetSet::setNewSheetLocation(char* defSheetLoc, IAcSmSubset *pSubSet) { if (FAILED(isInitialized("setNewSheetLocation"))) return E_FAIL; // lock the the database first before doing any operation on it if (FAILED(LockDatabase())) { acutPrintf("\n Database lock failed!"); return E_FAIL; } CComQIPtr<IAcSmSubset> pSub = pSubSet; if(!pSub.p) // Create a category at the root pSub = m_pSheetSet; // If new sheet location is specified, release it if(pDefNewSheetLoc.p) pDefNewSheetLoc.Release(); if (FAILED(pDefNewSheetLoc.CoCreateInstance(L"AcSmComponents.AcSmFileReference"))) { acutPrintf("\n Cannot create file reference"); return E_POINTER; } if (FAILED(pDefNewSheetLoc->InitNew(m_pDb))) { acutPrintf("\n Cannot initialize file reference"); return E_FAIL; } CComBSTR bstrFileName(defSheetLoc); // sheet location if (FAILED(pDefNewSheetLoc->SetFileName(bstrFileName))) { return E_FAIL; } if(FAILED(pSub->SetNewSheetLocation(pDefNewSheetLoc))) { acutPrintf("\n Cannot add default sheet location"); return E_FAIL; } // Unlock database if (FAILED(UnlockDatabase())) { acutPrintf("\n Cannot unlock database"); return E_FAIL; } return S_OK; }
bool visual_studio_open_file(char const * filename, unsigned int line) { HRESULT result; CLSID clsid; result = ::CLSIDFromProgID(L"VisualStudio.DTE", &clsid); if (FAILED(result)) return false; CComPtr<IUnknown> punk; result = ::GetActiveObject(clsid, NULL, &punk); if (FAILED(result)) return false; CComPtr<EnvDTE::_DTE> DTE; DTE = punk; CComPtr<EnvDTE::ItemOperations> item_ops; result = DTE->get_ItemOperations(&item_ops); if (FAILED(result)) return false; CComBSTR bstrFileName(filename); CComBSTR bstrKind(EnvDTE::vsViewKindTextView); CComPtr<EnvDTE::Window> window; result = item_ops->OpenFile(bstrFileName, bstrKind, &window); if (FAILED(result)) return false; CComPtr<EnvDTE::Document> doc; result = DTE->get_ActiveDocument(&doc); if (FAILED(result)) return false; CComPtr<IDispatch> selection_dispatch; result = doc->get_Selection(&selection_dispatch); if (FAILED(result)) return false; CComPtr<EnvDTE::TextSelection> selection; result = selection_dispatch->QueryInterface(&selection); if (FAILED(result)) return false; result = selection->GotoLine(line, TRUE); if (FAILED(result)) return false; return true; }
HRESULT TangraDirectShow::DirectShowOpenFile(LPCTSTR fileName, VideoFileInfo* fileInfo) { DirectShowCloseFile(); HRESULT hr; long lStreams; bool bFound = false; CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); hr = CoCreateInstance(CLSID_MediaDet, NULL, CLSCTX_INPROC, IID_IMediaDet, (void**)&m_MediaDet); if (FAILED(hr)) { return hr; } CComBSTR bstrFileName(fileName); hr = m_MediaDet->put_Filename(bstrFileName); if (FAILED(hr)) { return hr; } hr = m_MediaDet->get_OutputStreams(&lStreams); if (FAILED(hr)) { return hr; } for (long i = 0; i < lStreams; i++) { GUID major_type; hr = m_MediaDet->put_CurrentStream(i); if (SUCCEEDED(hr)) { hr = m_MediaDet->get_StreamType(&major_type); } if (FAILED(hr)) { break; } if (major_type == MEDIATYPE_Video) { bFound = true; break; } } if (!bFound) { return VFW_E_INVALIDMEDIATYPE; } //long m_Width = 0, m_Height = 0; AM_MEDIA_TYPE mt; hr = m_MediaDet->get_StreamMediaType(&mt); if (SUCCEEDED(hr)) { if ((mt.formattype == FORMAT_VideoInfo) && (mt.cbFormat >= sizeof(VIDEOINFOHEADER))) { VIDEOINFOHEADER *pVih = (VIDEOINFOHEADER*)(mt.pbFormat); fileInfo->Width = pVih->bmiHeader.biWidth; fileInfo->Height = pVih->bmiHeader.biHeight; fileInfo->BitmapImageSize= pVih->bmiHeader.biWidth * pVih->bmiHeader.biHeight * 3; // Will be always working with 24bit BMP m_Width = pVih->bmiHeader.biWidth; m_Height = pVih->bmiHeader.biHeight; // We want the absolute m_Height, don't care about orientation. if (fileInfo->Width < 0) { fileInfo->Width *= -1; m_Height *= -1; } strncpy_s(fileInfo->EngineBuffer, "DirectShow\0", 11); fileInfo->VideoFileTypeBuffer[0] = (pVih->bmiHeader.biCompression >> 24) & 0xFF; fileInfo->VideoFileTypeBuffer[1] = (pVih->bmiHeader.biCompression >> 16) & 0xFF; fileInfo->VideoFileTypeBuffer[2] = (pVih->bmiHeader.biCompression >> 8) & 0xFF; fileInfo->VideoFileTypeBuffer[3] = pVih->bmiHeader.biCompression & 0xFF; fileInfo->VideoFileTypeBuffer[4] = 0; } else {
static void goToLineInSourceCode( CString fileName, int line ) { USES_CONVERSION; CComPtr< IRunningObjectTable > pIRunningObjectTable; HRESULT hr = ::GetRunningObjectTable( 0, &pIRunningObjectTable ); CComPtr< IEnumMoniker > pIEnumMoniker; hr = pIRunningObjectTable->EnumRunning( &pIEnumMoniker ); CComPtr< EnvDTE::_DTE > pIEnvDTE; while ( true ) { ULONG celtFetched; CComPtr< IMoniker > pIMoniker; if ( S_OK != pIEnumMoniker->Next( 1, &pIMoniker, &celtFetched ) ) break; CComPtr< IBindCtx > pIBindCtx; hr = ::CreateBindCtx( NULL, &pIBindCtx ); LPOLESTR pszDisplayName; pIMoniker->GetDisplayName( pIBindCtx, NULL, &pszDisplayName ); TRACE( "Moniker %s\n", W2A( pszDisplayName ) ); CString strDisplayName( pszDisplayName ); CComPtr< IMalloc > pIMalloc; ::CoGetMalloc( 1, &pIMalloc ); pIMalloc->Free( pszDisplayName ); if ( strDisplayName.Right( 4 ) == _T(".sln") || strDisplayName.Find( _T("VisualStudio.DTE") ) >= 0 ) { CComPtr< IUnknown > pIUnknown; pIRunningObjectTable->GetObject( pIMoniker, &pIUnknown ); pIUnknown->QueryInterface( &pIEnvDTE ); if( pIEnvDTE.p ) break; } } if ( pIEnvDTE.p ) { CComPtr< EnvDTE::Documents > pIDocuments; HRESULT result = pIEnvDTE->get_Documents( &pIDocuments ); if ( !SUCCEEDED( result ) ) return; assert( pIDocuments.p ); CComPtr< EnvDTE::Document > pIDocument; CComBSTR bstrFileName( fileName ); CComVariant type=_T("Text"); CComVariant read=_T("False"); result = pIDocuments->Open( bstrFileName, type.bstrVal, read.bVal, &pIDocument ); if ( !SUCCEEDED( result ) ) return; assert( pIDocument.p ); CComPtr< IDispatch > pIDispatch; result = pIDocument->get_Selection( &pIDispatch ); if ( !SUCCEEDED( result ) ) return; CComPtr< EnvDTE::TextSelection > pITextSelection; pIDispatch->QueryInterface( &pITextSelection ); assert( pITextSelection.p ); result = pITextSelection->GotoLine( line, TRUE ); if ( !SUCCEEDED( result ) ) return; } }
HRESULT AsdkSheetSet::addCalloutBlock(char* blockName, char* drawingName) { if(FAILED(isInitialized("addCalloutBlock"))) return E_FAIL; // lock the the database first before doing any operation on it if (FAILED(LockDatabase())) { acutPrintf("\n Database lock failed!"); return E_FAIL; } CComPtr<IAcSmCalloutBlocks> pCalloutBlk = NULL; if (FAILED(m_pSheetSet->GetCalloutBlocks(&pCalloutBlk))) { acutPrintf("\n addCalloutBlock failed! Cannot get callout blocks!!"); return E_FAIL; } CComBSTR bstrBlockName(blockName); CComBSTR bstrFileName(drawingName); CComPtr<IAcSmAcDbBlockRecordReference> pCalloutRef = NULL; if (FAILED(pCalloutRef.CoCreateInstance(L"AcSmComponents.AcSmAcDbBlockRecordReference"))) { acutPrintf("\n addCalloutBlock failed! Cannot get named object reference!!"); return E_POINTER; } if (FAILED(pCalloutRef->InitNew(m_pDb))) return E_FAIL; if (FAILED(pCalloutRef->SetFileName(bstrFileName))) { acutPrintf("\n addCalloutBlock failed! Cannot set file name %s!!", drawingName); return E_FAIL; } if (FAILED(pCalloutRef->SetName(bstrBlockName))) { acutPrintf("\n addCalloutBlock failed! Cannot set block name %s!!", blockName); return E_FAIL; } if(FAILED(pCalloutBlk->Add(pCalloutRef))) { acutPrintf("\n addCalloutBlock failed! Cannot add callout reference!!"); return E_FAIL; } // Unlock database if (FAILED(UnlockDatabase())) { acutPrintf("\n Cannot unlock database"); return E_FAIL; } return S_OK; }