我用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滾動潭訓點擊時會一閃而過
請教這是什么情況?如何解決。
uj5u.com熱心網友回復:
必須要嵌入控制元件么?不能直接圖片么?uj5u.com熱心網友回復:
有結果了嗎?希望能回復下。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/28755.html
上一篇:VC連接資料庫
下一篇:如何下載vs2017的歷史版本
