Dear All=EF=BC=8C

I am writing a printer driver=EF=BC=8CI want to hook the STRETCHBLT
function=EF=BC=8Cbut I can not get it work=E3=80=82

My codes section as below=EF=BC=8C
/////////////////////////////////////////////////////
hSurf =3D EngCreateBitmap( sizeSurface,
GetBmpDelta(Format,
pPDEV- >ulHorzRes),Format,BMF_USERMEM|BMF_TOPDOWN, NULL) ;

EngAssociateSurface( (HSURF)hSurf, pPDEV->hDev, HOOK_STRETCHBLT ) ;

//////////////////////////////////////////////////////
BOOL WINAPI DrvStretchBlt(
IN SURFOBJ *psoDest,
IN SURFOBJ *psoSrc,
IN SURFOBJ *psoMask,
IN CLIPOBJ *pco,
IN XLATEOBJ *pxlo,
IN COLORADJUSTMENT *pca,
IN POINTL *pptlHTOrg,
IN RECTL *prclDest,
IN RECTL *prclSrc,
IN POINTL *pptlMask,
IN ULONG iMode
)
{
MessageBox(NULL,L"DrvStretchBlt",L"printer driver",MB_OK);

iMode =3D HALFTONE;
return EngStretchBlt(
psoDest,
psoSrc,
psoMask,
pco,
pxlo,
pca,
pptlHTOrg,
prclDest,
prclSrc,
pptlMask,
iMode
) ;
}
/////////////////////////////////////////////////////////


Anybody can give me some advice=EF=BC=8CThanks a lot=EF=BC=81

Best Regards=EF=BC=8C
Black

Re: How to hook STRETCHBLT (printer driver) by Terry

Terry
Wed Mar 08 10:39:20 CST 2006

Guessing:

A) DrvStretchBlt() is not in the DrvEnableDriver() function table
B) hSurf is not an HSURF (no cast should be required)
C) GetBmpDelta() does not work properly.
D) sizeSurface is incorrect.
E) Format is incorrect

<blacklee@gmail.com> wrote in message
news:1141809082.328725.23420@i39g2000cwa.googlegroups.com...
Dear All,

I am writing a printer driver,I want to hook the STRETCHBLT
function,but I can not get it work?

My codes section as below,
/////////////////////////////////////////////////////
hSurf = EngCreateBitmap( sizeSurface,
GetBmpDelta(Format,
pPDEV- >ulHorzRes),Format,BMF_USERMEM|BMF_TOPDOWN, NULL) ;

EngAssociateSurface( (HSURF)hSurf, pPDEV->hDev, HOOK_STRETCHBLT ) ;

//////////////////////////////////////////////////////
BOOL WINAPI DrvStretchBlt(
IN SURFOBJ *psoDest,
IN SURFOBJ *psoSrc,
IN SURFOBJ *psoMask,
IN CLIPOBJ *pco,
IN XLATEOBJ *pxlo,
IN COLORADJUSTMENT *pca,
IN POINTL *pptlHTOrg,
IN RECTL *prclDest,
IN RECTL *prclSrc,
IN POINTL *pptlMask,
IN ULONG iMode
)
{
MessageBox(NULL,L"DrvStretchBlt",L"printer driver",MB_OK);

iMode = HALFTONE;
return EngStretchBlt(
psoDest,
psoSrc,
psoMask,
pco,
pxlo,
pca,
pptlHTOrg,
prclDest,
prclSrc,
pptlMask,
iMode
) ;
}
/////////////////////////////////////////////////////////


Anybody can give me some advice,Thanks a lot!

Best Regards,
Black



Re: How to hook STRETCHBLT (printer driver) by Vipin

Vipin
Wed Mar 08 13:24:31 CST 2006

Have a look at DrvStretchBlt and DrvStretchBltTROP entry points.
Have a look at the source SURFOBJ, it will have the bitmap bits
you would like to get hold of.

--
Vipin Aravind
http://www.explorewindows.com


<blacklee@gmail.com> wrote in message
news:1141809082.328725.23420@i39g2000cwa.googlegroups.com...
Dear All,

I am writing a printer driver,I want to hook the STRETCHBLT
function,but I can not get it work?

My codes section as below,
/////////////////////////////////////////////////////
hSurf = EngCreateBitmap( sizeSurface,
GetBmpDelta(Format,
pPDEV- >ulHorzRes),Format,BMF_USERMEM|BMF_TOPDOWN, NULL) ;

EngAssociateSurface( (HSURF)hSurf, pPDEV->hDev, HOOK_STRETCHBLT ) ;

//////////////////////////////////////////////////////
BOOL WINAPI DrvStretchBlt(
IN SURFOBJ *psoDest,
IN SURFOBJ *psoSrc,
IN SURFOBJ *psoMask,
IN CLIPOBJ *pco,
IN XLATEOBJ *pxlo,
IN COLORADJUSTMENT *pca,
IN POINTL *pptlHTOrg,
IN RECTL *prclDest,
IN RECTL *prclSrc,
IN POINTL *pptlMask,
IN ULONG iMode
)
{
MessageBox(NULL,L"DrvStretchBlt",L"printer driver",MB_OK);

iMode = HALFTONE;
return EngStretchBlt(
psoDest,
psoSrc,
psoMask,
pco,
pxlo,
pca,
pptlHTOrg,
prclDest,
prclSrc,
pptlMask,
iMode
) ;
}
/////////////////////////////////////////////////////////


Anybody can give me some advice,Thanks a lot!

Best Regards,
Black