question regarding dibsections
Marcus Meissner
marcus at jet.franken.de
Fri Apr 28 15:38:13 CDT 2006
On Mon, Apr 24, 2006 at 09:44:50PM +0200, Marcus Meissner wrote:
> Hi,
>
> While debugging twain, I came across the nativexfer method, used by 60-70%
> of all twain using programs.
>
> It has some very unfortunate programming logic.
>
> Here is a sample snippet from:
> http://hp.vector.co.jp/authors/VA011973/prg_twain.htm
>
> TW_UINT16 rc;
> TW_UINT32 hBitmap;
> TW_BOOL PendingXfers = TRUE;
> LPBITMAPINFOHEADER lpDib;
>
> hBitmap = NULL;
> rc = lpfnDSM_Entry(pAppId,pSourceId,DG_IMAGE,DAT_IMAGENATIVEXFER,MSG_GET,(TW_MEMREF)&hBitmap);
> lpDib = (LPBITMAPINFOHEADER)GlobalLock((void*)hBitmap);
> /* ... */
> if(lpdib!=NULL){
> GlobalUnlock((void*)hBitmap);
> GlobalFree((void*)hBitmap);
> }
>
> (hBitmap is the return value of CreateDIBSection()).
>
> This sample code apparently assumes that GlobalLock(HBITMAP) gives it
> a pointer to a BITMAPINFOHEADER.
It also expects the DIB bits right behind this header (+ palette), which absolutely
does not match our currently DIB memory layouts.
I expect much fun :)
Ciao, Marcus
More information about the wine-devel
mailing list