如何实现半透明的控件或则窗体?

xcs99321 2006-09-10 03:11:21
我想实现半透明CStatic,它下面能摆放其它CStatic控件,也半透明的控件能接受消息,同时不屏蔽下层控件的消息,我该如何实现,有类似的例子吗
...全文
395 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcs99321 2006-09-23
  • 打赏
  • 举报
回复
谢谢大家指导,结贴了
「已注销」 2006-09-12
  • 打赏
  • 举报
回复
SetLayeredWindowAttributes这个函数MSDN中有详细的用法
littlepboy 2006-09-12
  • 打赏
  • 举报
回复
注:#define WS_EX_LAYERED 0x80000
:)
raymonzhao 2006-09-12
  • 打赏
  • 举报
回复
mark
Y___Y 2006-09-12
  • 打赏
  • 举报
回复
To:xcs99321 (星光灿烂)
终于找到好的解决办法了,这下该满足了吧

(转)
让窗口半透明的代码win2000下有不少,但是我想要的效果是窗体不响应鼠标,比如窗体在word上层,鼠标对窗体不能点击,点击都作用在word上,就连鼠标形状也是根据word中的文字变化样子,窗体仅仅在最前层显示一些信息。

---------------------------------------------------------------

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) |
WS_EX_TRANSPARENT | // 忽略一切消息(WM_PAINT除外)
WS_EX_LAYERED); // 层风格,有他才能支持半透明
SetLayeredWindowAttributes(Handle, Color, 100, LWA_ALPHA | LWA_COLORKEY);
littlepboy 2006-09-11
  • 打赏
  • 举报
回复
什么东西要实现得这么复杂。。
可以在上边控件的PreTranslateMessage()里面把所有消息PostMessage给下面控件。
jixingzhong 2006-09-11
  • 打赏
  • 举报
回复
消息直接传递到下层窗体上,不用关心下层窗体句柄
=======================
这个似乎有点难......

消息传递必须要有一定的信息可以知道谁来接收。
「已注销」 2006-09-11
  • 打赏
  • 举报
回复
楼主这样都不满足,这个方法蛮好啊
xcs99321 2006-09-10
  • 打赏
  • 举报
回复
Top
Y___Y(一叶障目)
你这种方法局限太大,有没有更好的办法,让消息直接传递到下层窗体上,不用关心下层窗体句柄
Y___Y 2006-09-10
  • 打赏
  • 举报
回复
用SendMessage()发给下面的控件就行了
xcs99321 2006-09-10
  • 打赏
  • 举报
回复
如何让它下面的窗体接收到消息呢
Y___Y 2006-09-10
  • 打赏
  • 举报
回复
窗体半透明效果
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,100,2);
ShowWindow(SW_SHOW);

}
FreeLibrary(hInst);
}

15,979

社区成员

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

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