J2KROIControl example for C++ 5.0 and later

   ILEADDicomDS *pLEADDicomDS = NULL;

   BSTR lpLic = SysAllocString(_szLicString);
   ILEADDicomFactory *pFactory=NULL;
   CoCreateInstance(CLSID_LEADDicomFactory, NULL, CLSCTX_ALL,
                    IID_ILEADDicomFactory, (void**)&pFactory);
#if _MSC_VER < 1200
   pLEADDicomDS = (ILEADDicomDS*)pFactory->CreateObject ("LEADDicomDS.LEADDicomDS", lpLic);
#else
   ILEADDicomDSPtr spLEADDicomDS=NULL;
   spLEADDicomDS = pFactory->CreateObject ("LEADDicomDS.LEADDicomDS", lpLic);
   pLEADDicomDS = spLEADDicomDS;
   pLEADDicomDS->AddRef();//because when spLEADDicomDS goes out of scope, it will auto Release()!
#endif
   pLEADDicomDS->EnableMethodErrors = FALSE;

   // Unlock DICOM & J2K support.
   ILEADDicomKernel *pLEADDicomKernel = NULL;
#if _MSC_VER < 1200
   pLEADDicomKernel = (ILEADDicomKernel*)pFactory->CreateObject ("LEADDicomKernel.LEADDicomKernel", lpLic);
#else
   ILEADDicomKernelPtr spLEADDicomKernel=NULL;
   spLEADDicomKernel = pFactory->CreateObject ("LEADDicomKernel.LEADDicomKernel", lpLic);
   pLEADDicomKernel = spLEADDicomKernel;
   pLEADDicomKernel->AddRef();//because when spLEADDicomKernel goes out of scope, it will auto Release()!
#endif
   pFactory->Release();
   SysFreeString(lpLic);

   pLEADDicomKernel->UnlockSupport (L_SUPPORT_J2K,L_KEY_J2K);
   pLEADDicomKernel->UnlockSupport (L_SUPPORT_MEDICAL,L_KEY_MEDICAL);   
   pLEADDicomKernel->Release();

   pLEADDicomDS->InitDS (DICOM_CLASS_CR_IMAGE_STORAGE, 
                        DS_EXPLICIT_VR       | 
                        DS_METAHEADER_ABSENT | 
                        DS_LITTLE_ENDIAN);
   //load an image
   ILEADRasterIO *pRasterIO=NULL;
   HRESULT hr;
   hr = CoCreateInstance(CLSID_LEADRasterIO,
                         NULL,
                         CLSCTX_ALL,
                         IID_ILEADRasterIO,
                         (void**)&pRasterIO);
   pRasterIO->EnableMethodErrors = FALSE;

   pRasterIO->Load(m_LEADRasterView1.GetRaster(), "d:\\lead14\\dist\\images\\dicom\\image3.dic", 0, 1, 1);
   AfxMessageBox("Image loaded from File - Wait");
   pRasterIO->Release();
   //insert the image into the element
   pLEADDicomDS->Bitmap = m_LEADRasterView1.GetRaster().GetBitmap();
   // Default Options
   IDicomJ2KOptionsPtr pJ2K = pLEADDicomDS->J2KOptions();
   pJ2K->J2KSetDefaults();
   //Use the Compression ratio   
   pJ2K->J2KCompressionControl = DICOM_J2K_COMP_RATIO;
   pJ2K->J2KCompressionRatio = 200;

   pJ2K->J2KUseROI = TRUE; 
   pJ2K->J2KROIControl = J2K_USEOPTION_RECT;
   pJ2K->J2KROILeft = 200;
   pJ2K->J2KROITop = 200;
   pJ2K->J2KROIWidth = 600;
   pJ2K->J2KROIHeight = 600;
   pJ2K->J2KXTsiz = 100;
   pJ2K->J2KYTsiz = 100;
   //set the bitmap
   pLEADDicomDS->SetBitmapValue (DICOM_IMAGE_COMPRESSION_J2K_LOSSY,
                                DICOM_IMAGE_PHOTOMETRIC_MONOCHROME2, 
                                0, 0, 0);
   pLEADDicomDS->SaveDS ("d:\\temp\\out.dic", 0);