[WinPrnDev] DrvQueryPerBandInfo question

  • From: "Terry Cl." <cl.terry@xxxxxxxxx>
  • To: "winprndev@xxxxxxxxxxxxx" <winprndev@xxxxxxxxxxxxx>
  • Date: Thu, 15 Mar 2012 13:14:44 -0700 (PDT)

Hi,
I am writing a wrapper dll for an existing printer driver. Basically what I 
want to do is to make some changes to the final output of the page in either 
DrvNextBand or DrvSendPage functions. I am having an interesting case regarding 
calling of DrvQueryPerBandInfo function by the GDI and drivers returned values.


When this function is first called, driver returns the full width and height of 
the surface in PERBANDINFO structure instead of the band size and also sets the 
bRepeatThisBand to 1 which tells the GDI to repeat this band. GDI then calls 
the rendering function (DrvBitBlt, DrvTextOut etc.) and then calls 
DrvQueryPerBandInfo again. In this second call the DrvQueryPerBandInfo, driver 
returns the band size as normal and bRepeatThisBand is set to 0.  After that, 
usual banding calls occurs.


What I don't understand is that why driver wants GDI to repeat the band (in 
this case band size is equal to whole page) without sending it to the printer? 
What's the possible use case of setting bRepeatThisBand to 1?
By the way, for the same driver, if I don't return function pointer to 
DrvQueryPerBandInfo (everything else is same), driver works as expected and 
produces correct output, but with DrvqueryPerBandInfo implemented, some 
internal exception occurs in the driver.

Thank you all.
---
Questions? First check the UndocPrint pages at 
http://www.undocprint.org/winspool

To unsubscribe, visit the List Server page at 
//www.freelists.org/list/winprndev

Other related posts:

  • » [WinPrnDev] DrvQueryPerBandInfo question - Terry Cl.