- success = ::BitBlt(GetHdc(), xdest, ydest,
- (int)width, (int)height,
- GetHdcOf(*source), xsrc, ysrc, dwRop) != 0;
+ // use StretchBlt() if available
+ if ( ::GetDeviceCaps(GetHdc(), RASTERCAPS) & RC_STRETCHBLT )
+ {
+ StretchBltModeChanger changeMode(GetHdc(), COLORONCOLOR);
+
+ success = ::StretchBlt
+ (
+ GetHdc(),
+ xdest, ydest, width, height,
+ GetHdcOf(*source),
+ xsrc, ysrc, width, height,
+ dwRop
+ ) != 0;
+ }
+ else
+ {
+ success = ::BitBlt
+ (
+ GetHdc(),
+ xdest, ydest,
+ (int)width, (int)height,
+ GetHdcOf(*source),
+ xsrc, ysrc,
+ dwRop
+ ) != 0;
+ }
+