Xceed Streaming Compression Library Documentation
Examples / Compressing entirely in memory (VC++ example)
In This Topic
    Compressing entirely in memory (VC++ example)
    In This Topic
    VC++ Copy Code

    // This code uses the #import directive.
    // Put the following line at the beginning of your module

    #import "XCEEDSCO.DLL" no_namespace named_guids 

    CoInitialize( NULL ); 

    try
    {
      IXceedStreamingCompressionPtr piComp; 

      piComp.CreateInstance( CLSID_XceedStreamingCompression ); 
      piComp->License( _bstr_t( L"your license key ) ); 

      IXceedStandardCompressionFormatPtr piFormat; 

      piFormat.CreateInstance( CLSID_XceedStandardCompressionFormat );  

      piComp->CompressionFormat = IXceedCompressDataPtr( piFormat );  

      const char* pszSource = "This is the data to compress compress compress";  

      // Let's say we want to compress the null-char too 
      DWORD dwSourceSize = lstrlen( pszSource ) + 1;  

      BYTE* pcCompressed = NULL; 
      DWORD dwCompressedSize = 0;  

      piComp->Compress( ( BYTE* )pszSource, dwSourceSize, TRUE, &pcCompressed, &dwCompressedSize );  

      MessageBox( NULL, "Data compressed successfully", "Compression result", MB_OK );  

      CoTaskMemFree( pcCompressed ); 
    }
    catch( const _com_error& xErr )
    {
      char szMsg[50]; 
      wsprintf( szMsg, "Error %08x: %s\n",  
      xErr.Error(), ( const char* )xErr.Description() ); 
      MessageBox( NULL, szMsg, "Error", MB_OK ); 
    }
    catch( ... )
    {
      MessageBox( NULL, "Unknown error", "Error", MB_OK ); 

    CoUninitialize();