高手帮忙:关于透明按钮的实现!
我自己仿照CButtonST做了一个按钮类,可以实现位图按钮透明。
其透明原理是:得到按钮的父窗口,拷贝出按钮所在位置的位图,然后在绘制按钮时显示出来,代码大致如下:
CClientDC clDC(GetParent());
CRect rect;
CRect rect1;
GetClientRect(rect);
GetWindowRect(rect1);
GetParent()->ScreenToClient(rect1);
if (m_dcBk.m_hDC == NULL)
{
m_dcBk.CreateCompatibleDC(&clDC);
m_bmpBk.CreateCompatibleBitmap(&clDC, rect.Width(), rect.Height());
m_pbmpOldBk = m_dcBk.SelectObject(&m_bmpBk);
m_dcBk.BitBlt(0, 0, rect.Width(), rect.Height(), &clDC, rect1.left, rect1.top, SRCCOPY);
} // if
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &m_dcBk, 0, 0, SRCCOPY);
这样就有一个问题,当我的按钮处于弹出窗口的最下端,而且弹出的窗口的最下端刚好被Windows的任务栏给遮住的时候,按钮的透明部分就不再透明,而是会显示Windows任务栏中遮住按钮的那部分。
不知各位是怎么解决这个问题的。
其透明原理是:得到按钮的父窗口,拷贝出按钮所在位置的位图,然后在绘制按钮时显示出来,代码大致如下:
CClientDC clDC(GetParent());
CRect rect;
CRect rect1;
GetClientRect(rect);
GetWindowRect(rect1);
GetParent()->ScreenToClient(rect1);
if (m_dcBk.m_hDC == NULL)
{
m_dcBk.CreateCompatibleDC(&clDC);
m_bmpBk.CreateCompatibleBitmap(&clDC, rect.Width(), rect.Height());
m_pbmpOldBk = m_dcBk.SelectObject(&m_bmpBk);
m_dcBk.BitBlt(0, 0, rect.Width(), rect.Height(), &clDC, rect1.left, rect1.top, SRCCOPY);
} // if
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &m_dcBk, 0, 0, SRCCOPY);
这样就有一个问题,当我的按钮处于弹出窗口的最下端,而且弹出的窗口的最下端刚好被Windows的任务栏给遮住的时候,按钮的透明部分就不再透明,而是会显示Windows任务栏中遮住按钮的那部分。
不知各位是怎么解决这个问题的。
...全文
相关推荐
vc++实现透明按钮
从网上搜索到得关于设置透明按钮的word文档
在WPF中做出透明按钮
在Microsoft Expression Blend中做的透明按钮,可以应用到Visio Stdio2010 中去,添加资源字典,然后引用即可,在WPF界面中引用样式,会比较炫酷!
WPF透明六角六边形按钮
WPF,六边形按钮,透明按钮,鼠标经过闪烁,鼠标点击闪烁
几代码实现导航栏透明渐变、实现TabBar中间凸起
几代码实现导航栏透明渐变、实现TabBar中间凸起;可自定义
js+html5实现半透明遮罩层弹框效果
主要为大家详细介绍了js+html5实现半透明遮罩层弹框效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


