首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么小弟我的代码使用TransparentBlt,什么都不显示呢

2012-02-04 
为什么我的代码使用TransparentBlt,什么都不显示呢?如题,很简单的代码。类CBitmapWnd是从CWnd继承过来的一

为什么我的代码使用TransparentBlt,什么都不显示呢?
如题,很简单的代码。
类CBitmapWnd是从CWnd继承过来的一个控件。

C/C++ code
void CBitmapWnd::OnPaint(){    CPaintDC dc(this);    BITMAP bm;    m_FootBallBitmap.GetBitmap(&bm);    int nWidth = bm.bmWidth;    int nHeight = bm.bmHeight;    COLORREF crMask = RGB(0xff,0xff,0xff);    CDC ImageDC;    ImageDC.CreateCompatibleDC(&dc);    CBitmap *pOldImageBMP = ImageDC.SelectObject(&m_FootBallBitmap);    ::TransparentBlt(dc.m_hDC,50,40,nWidth,nHeight,ImageDC.m_hDC,0,0,nWidth,nHeight,crMask);        ImageDC.SelectObject(pOldImageBMP);}


[解决办法]
在我使用TransparentBlt函数的时候,也发现了这个问题,用BitBlt可以显示,TransparentBlt就不能。

后经过测试,发现是TransparentBlt函数第9个和第10个参数的问题,

即nWidthSrc 和nHeightSrc这两个参数

这两个参数必须小于或等于位图的实际宽度和高度,否则此函数会调用失败,

在使用中要特别注意。

热点排行