Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
    }
}
Exemplo n.º 5
0
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;
}