关于UpdateLayeredWindow函数的问题,为什么显示不了界面?

fangqing0827 2007-05-18 05:33:46
按照MSDN上的介绍,该函数的作用是更新一个layered 窗口的位置、大小、形状、内容和透明度。现在建立一个对话框程序,在OnInitDialog()中添加如下代码:
BLENDFUNCTION blend;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha =100;

::UpdateLayeredWindow(
m_hWnd //本窗口句柄
, GetDC(m_hwnd)
, NULL //保持当前窗口未知不变
, NULL //保持当前窗口大小不变
, NULL
, NULL
, NULL
, &blend
, ULW_ALPHA);
为什么对话框不会自动透明到alpha值为100?



上述代码目的只是简单的把窗口设为半透明,为什么看不到界面?

当然把窗口设为半透明也可以简单的用
SetLayeredWindowAttributes(m_hwnd, 0, (255 * 70) / 100, LWA_ALPHA);
但是为了验证
UpdateLayeredWindow的作用所以上述代码特意用UpdateLayeredWindow来设置窗口的透明度。
为什么看不到界面?
...全文
824 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
genghao 2007-10-11
  • 打赏
  • 举报
回复
1.如果你是用CreateWindow创建的窗体,你在程序初始化时调用下面的代码
DWORD dwExStyle=GetWindowLong(hwnd,GWL_EXSTYLE);
if((dwExStyle&0x80000)!=0x80000)
SetWindowLong(hwnd ,GWL_EXSTYLE,dwExStyle^0x80000);

2.如果你是用CreateWindowEx创建的窗体
dwExStyle定义成WS_EX_LAYERED
fangqing0827 2007-05-30
  • 打赏
  • 举报
回复
to Super_Huai(坏坏):那里不对?望指出。
笑容为你 2007-05-28
  • 打赏
  • 举报
回复
看清楚UpdateLayeredWindow的参数啊,你用得不对
fangqing0827 2007-05-22
  • 打赏
  • 举报
回复
问了等于白问
abuseyoudna1981 2007-05-18
  • 打赏
  • 举报
回复
BOOL SetLayeredWindowAttributes( HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);

15,978

社区成员

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

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