关于UpdateLayeredWindow函数的问题,为什么显示不了界面?
按照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来设置窗口的透明度。
为什么看不到界面?