- 相关文章
- 评论本文:
背景透明的按钮
From: xuyibo.org Updated: 2020-09-23当更新时自动发送邮件通知。 | |
有什么建议或评论,可以贴一下。 | |
你的支持,让我们做的更好。 | |
我在开发txt2chm工具的时候遇到了这个问题。
起先我使用的是static窗口,使用了SS_BITMAP样式,选择了一个24位的位图,可就是不透明,后来我打算使用ICON,因为ICON能够有透明的效果。
我就制作了一个16*16的图标,背景透明的,效果呢?图标显示的特别大,也不知道什么原因,微软的MSDN中说拥有SS_BITMAP和SS_ICON的static窗口,windows会自动调节窗口的大小。
无奈中,我想起了dreamweaver是怎么做的,使用spyxx检查了一下,看到一个有价值的东西:是个拥有BS_OWNDRAW样式的按钮。下面是我的代码,提取自txt2chm项目代码:
case WM_DRAWITEM: { HDC hdcMem; LPDRAWITEMSTRUCT lpdis; lpdis = (LPDRAWITEMSTRUCT) lParam; hdcMem = CreateCompatibleDC(lpdis->hDC); SelectObject(hdcMem, hBitmap); // Destination TransparentBlt( lpdis->hDC, // destination DC 0, 0, 15, 15, hdcMem, // source device context 0, 0, 15, 15, // x and y upper left RGB(255,0,255)); // raster operation DeleteDC(hdcMem); return TRUE; } return TRUE;
WM_DRAWITEM就是负责画按钮的,注意此时不能使用BitBlt,因为BitBlt没有mask的功能。
程序异常捕获库 – CrashRpt
注册表API简易教程
MAPI MAPISendMail
轻量级的浏览器控件HTMLLITE
在XP下使用Link控件
我的电脑软配置
让你的程序支持脱拽