炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1672|回复: 1

元素BUG。

[复制链接]

该用户从未签到

发表于 2014-12-30 14:34:18 | 显示全部楼层 |阅读模式
本帖最后由 404022 于 2014-12-30 15:01 编辑



XC_WIND_TRANSPARENT_SHADOW、XC_WIND_TRANSPARENT_SHAPED 这两种风格的窗口有个BUG。

BUG描述:当窗口是上述两种风格是,如果窗口存在Edit元素,那么当 开启透明时, Edit的光标不太正常。
  1. XEle_EnableTransparentChannel(hEdit,%TRUE)
复制代码

BUG原因:因为DDB不支持ALPHA通道。
通过阅读 1.5x的源码发现,在 Ele_ConvMsgPaint 中。
  1. HBITMAP hBitmap=CreateCompatibleBitmap(hdc,cx,cy); //创建窗口位图
复制代码


解决办法: 将 CreateCompatibleBitmap(hdc,cx,cy); 替换为 XDraw_CreateDIBSection(hdc,cx,cy);


ps:1.6x也存在此BUG。




该用户从未签到

 楼主| 发表于 2014-12-30 15:17:05 | 显示全部楼层
1.6X的解决办法:
hook CreateCompatibleBitmap,jump XDraw_CreateDIBSection
  1. HBITMAP XDraw_CreateDIBSection(HDC hdc,int cx,int cy)
  2. {
  3.         void *pBits;
  4.         BITMAPINFO info;
  5.         memset(&info.bmiHeader,0,sizeof(BITMAPINFOHEADER));
  6.         info.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
  7.         info.bmiHeader.biBitCount=32;
  8.         info.bmiHeader.biCompression=BI_RGB;
  9.         info.bmiHeader.biPlanes=1;
  10.         info.bmiHeader.biWidth=cx;
  11.         info.bmiHeader.biHeight=cy;
  12.         return CreateDIBSection(hdc,&info,DIB_RGB_COLORS,&pBits,NULL,0);
  13. }
复制代码
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

GMT+8, 2024-9-19 09:43 , Processed in 0.174674 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表