Xceed Streaming Compression Library Documentation
Compressing entirely in memory (VC++ example)
Examples > Compressing entirely in memory (VC++ example)
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();