我用VS2008新建了一个ATL工程,添加了OnCreate方法(仅仅修改窗口扩展样式为透明)
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
const LONG_PTR exStyle = GetWindowLongPtr(GWL_EXSTYLE);
SetWindowLongPtr(GWL_EXSTYLE, exStyle | WS_EX_TRANSPARENT);
return 0;
}
同时修改OnDrawAdvanced为从磁盘加载图片并绘制到窗口(通过BitBlt的SRCAND)
HRESULT OnDrawAdvanced(ATL_DRAWINFO& di)
{
RECT& rc = *(RECT*)di.prcBounds;
CImage imgx;
imgx.Load(_T("C:\\image.jpg"));
imgx.StretchBlt(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom, 0,0,imgx.GetWidth(),imgx.GetHeight(), SRCAND);
return S_OK;
}
加载的jpg图片如下:
以上代码编译后在Word2007中无论设置哪种嵌入方式都能正常显示,
但在Word2013中,遇到了诡异现象:
当设置为嵌入型时,和2007一样,一切正常
当设置为嵌入型以外的任何其他方式时,图像变成了黑白。
而当把StretchBlt改为TransparentBlt时,图像完全不能显示,但拖动word滚动条或点击时会一闪而过
请教这是什么情况?如何解决。