是在EVC中编程,运行在WinCE中我建立了一个对话框类,在其中画两个图,m_hBmpBg(背景),m_hBmpBall(前景)。想让前景透明,使用了TransparentBlt函数。但其第一个参数设为CDC memDC就不行,直接用CPaintDC dc就可以。不知道问题出在哪里?void CTest13Dlg::OnPaint()
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
HBITMAP hBmp = (HBITMAP)memDC.SelectObject(m_hBmpBg); CDC ImageDC;
ImageDC.CreateCompatibleDC(&dc);
HBITMAP hOldBmp = (HBITMAP)ImageDC.SelectObject(m_hBmpBall); TransparentBlt(memDC.m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218, 199, RGB(0,0,0xff)); //直接将memDC.m_hDC换成dc.m_hDC就可以
ImageDC.SelectObject(hOldBmp);
ImageDC.DeleteDC();
dc.BitBlt(0, 0, 300, 300, &memDC, 0, 0, SRCCOPY); memDC.SelectObject(hBmp);
memDC.DeleteDC();
}
谢谢!现在分比较少。以后一定加分!
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
HBITMAP hBmp = (HBITMAP)memDC.SelectObject(m_hBmpBg); CDC ImageDC;
ImageDC.CreateCompatibleDC(&dc);
HBITMAP hOldBmp = (HBITMAP)ImageDC.SelectObject(m_hBmpBall); TransparentBlt(memDC.m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218, 199, RGB(0,0,0xff)); //直接将memDC.m_hDC换成dc.m_hDC就可以
ImageDC.SelectObject(hOldBmp);
ImageDC.DeleteDC();
dc.BitBlt(0, 0, 300, 300, &memDC, 0, 0, SRCCOPY); memDC.SelectObject(hBmp);
memDC.DeleteDC();
}
谢谢!现在分比较少。以后一定加分!
解决方案 »
- 重写CEdit类的问题!!!
- COM对象中使用HWND,HICON,参数,在使用#import时 HWND变成wireHWND,HICON,变成wireHICON.如何让他们不变?#import如何导出64位接口?
- 如何是Menu弹出的子菜单中有一个钩子
- 高薪急聘MFC高手,北京或者在石家庄
- 关于用DriverWorks开发USB驱动的问题
- 问一个关于从Edit控件中提取浮点数的问题
- 大家知道了吗,同样有ARP协议,XP竟然竟然这么聪明,不被ARP欺骗
- 请问要弄明白MFC是不是要看《深入浅出MFC》这本书
- 有什么函数可以检测文件名是否合法?
- 活动目录中提取出用户GUID问题
- libnet的发多个数据包问题,高手的请进!我跪求了,做牛做马在所不辞!1000分求助!
- excel进程问题
memDC.BitBlt(0, 0, 443, 320, &dc, 0, 0, SRCCOPY); 吗?还是不行,TransparentBlt()函数返回值为零,也就是这个函数调用失败。
是不是WinCE中有什么限制?
Windows NT: Requires version 5.0 or later.
Windows: Requires Windows 98 or later.
Windows CE: Unsupported.
Header: Declared in wingdi.h.
Import Library: Included as a resource in msimg32.dll.MSDN 2001 Oct中的说明,不知道最新的是否支持;
我用的是VS2005的智能设备项目,不知道你说的VS.net是不是指的这个