ina mbiente BCB tutto si riduce al codice sotto senza impazzire più di tanto:
Codice:
int ex = TwainExists();
if(ex != NULL)
{
HANDLE dib = TwainGetImage( Handle );
if ( dib == 0 ) return;
LPBITMAPINFO bmi = (LPBITMAPINFO)::GlobalLock(dib);
Image->Picture->Bitmap->Height = bmi->bmiHeader.biHeight;
Image->Picture->Bitmap->Width = bmi->bmiHeader.biWidth;
SetDIBits( Image->Picture->Bitmap->Canvas->Handle, Image->Picture->Bitmap->Handle, 0,
(UINT) bmi->bmiHeader.biHeight,
(Byte*)((Byte*)bmi + sizeof(BITMAPINFOHEADER)),
bmi, DIB_RGB_COLORS );
Image->Width = bmi->bmiHeader.biWidth;
Image->Height = bmi->bmiHeader.biHeight;
Image1->Width=Image->Width;
Image1->Height=Image->Height;
rapporto = (double)Image->Picture->Width/(double)Image->Picture->Height;
myForm->Caption = revisione + String(" (X:")+Image->Width+" Y:"+Image->Height+")";
Snap = true;
::GlobalUnlock( dib );
::GlobalFree( dib );
}