UpdateLayeredWindow 失败导致透明gdi+ 窗口没有被显示
来源:互联网 发布:詹姆斯历史赛季数据 编辑:程序博客网 时间:2024/06/16 11:56
在多屏幕应用的场景中。其中有一个屏幕启动全屏游戏应用,另一个屏幕有一个窗口调用UpdateLayeredWindow 更新窗口信息,当游戏应用为16位色时候失败。故需要修改设定参数。例子代码如下:
HDC hdctemp = ::GetDC (m_hWnd); //GetDC()->m_hDC;
HDC hdcMemory=CreateCompatibleDC(hdctemp);
HBITMAP hBitMap=CreateCompatibleBitmap(hdctemp,rect.Width(),rect.Height()/*m_BGHeight*/);
修改为
HDC hdctemp = ::GetDC (m_hWnd); //GetDC()->m_hDC;
HDC hdcMemory=CreateCompatibleDC(hdctemp);
BYTE * pBits ;
BITMAPINFOHEADER bmih;
ZeroMemory( &bmih, sizeof( BITMAPINFO ) );
bmih.biSize = sizeof (BITMAPINFOHEADER) ;
bmih.biWidth = rect.Width() ;
bmih.biHeight = rect.Height() ;
bmih.biPlanes = 1 ;
bmih.biBitCount = 32; //这里一定要是32 16位色没有alpha通道
bmih.biCompression = BI_RGB ;
bmih.biSizeImage = 0 ;
bmih.biXPelsPerMeter = 0 ;
bmih.biYPelsPerMeter = 0 ;
bmih.biClrUsed = 0 ;
bmih.biClrImportant = 0 ;
HBITMAP hBitMap = CreateDIBSection (NULL, (BITMAPINFO *) &bmih, 0, (VOID**)&pBits, NULL, 0) ;
即bitmap对象的创建不能以screen的dc来创建。
- UpdateLayeredWindow 失败导致透明gdi+ 窗口没有被显示
- GDI+ 透明窗口.UpdateLayeredWindow
- GDI+ 透明窗口.UpdateLayeredWindow
- GDI+ 透明窗口.UpdateLayeredWindow
- [GDI+]16位色下UpdateLayeredWindow失败
- UpdateLayeredWindow实现自定义透明窗口
- GDI+ / PNG 实现半透明窗口,正常情况下没有问题 将系统设置为16位色后UpdateLayeredWindow函数失败,GetLastError返回8(ERROR_NOT_ENOUGH_MEMORY)
- GDI位图透明显示
- gdi+ 快速绘制透明窗口
- UpdateLayeredWindow 绘制异型窗口
- 使用UpdateLayeredWindow 创建透明窗体
- UpdateLayeredWindow()失败,GetLastError()返回0
- UpdateLayeredWindow方式实现异型窗口
- 有关透明窗口的显示
- DrawText在UpdateLayeredWindow中透明的解决办法
- GDI+ 在窗口显示内存图片
- VC利用GDI+显示透明的PNG图片
- VC利用GDI+显示透明的PNG图片
- WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
- 备忘:java中的递归
- 资深黄金专家李鑫:独创7套算点理论震惊市场
- 心得
- php如何实现web系统单点登录
- UpdateLayeredWindow 失败导致透明gdi+ 窗口没有被显示
- WSAStartup()和 WSACleanup()两个函数除外,其他不是强制性的
- start with
- MVVM实践教程
- Flex点击弹出菜单示例
- 访问者模式
- Apache无法解析PHP代码的问题
- 在Emacs调试JAVA程序,使用GUD模式
- 著名国画家金士焯