半透明控件如何实现!(不是对话框的那种)

CBEMA 2010-01-10 10:24:03
在网上看到
//加入WS_EX_LAYERED扩展属性
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(this->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}
不过这个只是针对于对话框的。

有没有针对于static 、button的呢?

我试过将这段代码加入static 、button的重绘类中,都没有达到想要的效果。
...全文
784 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
nodirection 2011-10-16
  • 打赏
  • 举报
回复
怎么弄啊,我也想知道。
CBEMA 2010-01-19
  • 打赏
  • 举报
回复
谢谢,我试试看。
aa3000 2010-01-18
  • 打赏
  • 举报
回复
使用 AlphaBlend 吧
CBEMA 2010-01-17
  • 打赏
  • 举报
回复
没得到想要的答案,结帖!
chenyu2202863 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 aa3000 的回复:]
获取父窗口背景,画在控件的DC上,然后再画需要半透明的图像
[/Quote]

就是这样滴~
gamedragon 2010-01-15
  • 打赏
  • 举报
回复
GDI+
CBEMA 2010-01-15
  • 打赏
  • 举报
回复
不用gdi,有没有其他的函数能够实现半透明。
xwsn007 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 marrco2005 的回复:]
这种方法对WS_CHILD子窗口是无效的
[/Quote]

同意
CBEMA 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lllyyy2403 的回复:]
引用 2 楼 cbema 的回复:
控件的要怎么实现?

采用控件子类化方法应该可行。具体方法比如Edit,可从CEDIT派生出一个MyEdit类出来,然后在这个类里重载相关函数,或许可行。
[/Quote]
我就是这么做的。
lllyyy2403 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cbema 的回复:]
控件的要怎么实现?
[/Quote]
采用控件子类化方法应该可行。具体方法比如Edit,可从CEDIT派生出一个MyEdit类出来,然后在这个类里重载相关函数,或许可行。
marrco2005 2010-01-11
  • 打赏
  • 举报
回复
这种方法对WS_CHILD子窗口是无效的
CBEMA 2010-01-11
  • 打赏
  • 举报
回复
我就是把这段代码放到控件类里面。
无论是create onpain 里面都不行。
sjdev 2010-01-11
  • 打赏
  • 举报
回复
是你使用的不对吧?你使控件透明的代码呢?
CBEMA 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mmilmf 的回复:]
一个是将
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
这里的句柄改为控件的句柄试试,通过this获取的句柄是对话框的不行


二是自绘控件在具体的控件中使用上面的代码做

主要是控件也是窗体,应该可以的

[/Quote]

可能是我实现的地方不对吧。static 、button我都试过了。
第一种方法比较麻烦,因为这个控件我想嵌入到另外一个Button或是static里面使用。通过鼠标移动,位置是可以变化的。


如果不行,有没有利用pdc绘制半透明区域的方法?
qdbje 2010-01-11
  • 打赏
  • 举报
回复
GDI+可以比较简单实现图像的透明。。。
gamedragon 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 cbema 的回复:]
引用 16 楼 aa3000 的回复:
获取父窗口背景,画在控件的DC上,然后再画需要半透明的图像


我就是这个半透明的图像不会处理,怎么把图象处理成半透明?
[/Quote]
GDI+支持alpha
或者用AlphaBlend这个函数
CBEMA 2010-01-11
  • 打赏
  • 举报
回复
大家说得我都已经作过了,可能我说得不太明白,再细致的说一下:

在自绘的static 或是button中的某个区域绘制一幅半透明的图像。
自绘的工作在提问的时候就已经作完了,但是不知道用什么方法来实现某个区域半透明。

zsdzzzy 2010-01-11
  • 打赏
  • 举报
回复
关注。
CBEMA 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 aa3000 的回复:]
获取父窗口背景,画在控件的DC上,然后再画需要半透明的图像
[/Quote]

我就是这个半透明的图像不会处理,怎么把图象处理成半透明?
aa3000 2010-01-11
  • 打赏
  • 举报
回复
获取父窗口背景,画在控件的DC上,然后再画需要半透明的图像
加载更多回复(9)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧