Help needed for printing Bitmap to specific Hdc
- Posted by Rad <radhx at rediffmail.com> Mar 12, 2006
- 501 views
Hi, I am trying to print a bitmap to a specific Hdc. This Hdc is provided by a printpreview dll. I could create a fontHandle using CreateFontA() and print to the same Hdc, but printing of bitmap fails. I am using CreateCompatibleBitmap() using the specified Hdc and trying to use following code:
--=================================================================================== -- This function creates a compatible bitmap global function cCreateBitmap(atom Hdc, integer WidthInPx, integer HeightInPx) atom hBitmapHandle hBitmapHandle=w32Func( xCreateCompatibleBitmap, {Hdc, WidthInPx, HeightInPx} ) return hBitmapHandle end function --=================================================================================== x = 10 y = 10 w = 0 h = 0 vertFactor = 1 horzFactor = 1 name = "temp.bmp" data = repeat(0,4) fn=open(name,"rb") if fn = -1 then fn = message_box("Failed to open "&name, "printDIB error", MB_OK) return w32True end if for i=1 to 18 do bmp = getc(fn) end for data[1]=getc(fn) data[2]=getc(fn) data[3]=getc(fn) data[4]=getc(fn) wbmp=bytes_to_int(data) data[1]=getc(fn) data[2]=getc(fn) data[3]=getc(fn) data[4]=getc(fn) hbmp=bytes_to_int(data) close(fn) -- Get printed size if w = 0 and h = 0 then wpic = wbmp -- pixel count same hpic = hbmp * (vertFactor/horzFactor) elsif w = 0 then hpic = h * vertFactor -- height defined wpic = hpic * (wbmp/hbmp) * (horzFactor/vertFactor) elsif h = 0 then wpic = w * horzFactor -- width defined hpic = wpic * (hbmp/wbmp) * (vertFactor/horzFactor) else wpic = w * horzFactor -- both defined hpic = h * vertFactor end if wpic = floor(wpic) hpic = floor(hpic) -- Load the bitmap into memory bmp = loadBitmapFromFile(name) gl_hBitmap=cCreateBitmap(Hdc, wpic, hpic) hPreviousGdiObject= w32Func( xSelectObject, {Hdc, gl_hBitmap} ) stretchBlt( Hdc, -- copy to TheWindow x, y, -- put at {10,10} in TheWindow wpic, hpic, -- size of printed bitmap bmp, -- copy from loaded bitmap 0, 0, -- upper left hand corner is {0,0} wbmp, hbmp, -- copy a wbmp x hbmp pixel portion SRCCOPY ) -- replace destination with image result= w32Func( xSelectObject, {Hdc,hPreviousGdiObject} )
Nothing gets printed to Hdc. Can somebody help me out in this? Regards, Rad.