在 MFC(Microsoft Foundation Classes)中,CWnd::SetLayeredWindowAttributes 是一个公共方法,用于设置窗口的透明度和颜色键。该方法的声明如下:
BOOL SetLayeredWindowAttributes(COLORREF crKey, BYTE bAlpha, DWORD dwFlags);

  •  crKey: 一个 COLORREF 值,表示颜色键。在窗口上的此颜色将是透明的。

  •  bAlpha: 一个 BYTE 值,表示窗口的透明度。取值范围为 0(完全透明)到 255(完全不透明)。

  •  dwFlags: 一个 DWORD 值,表示设置的标志。可以是以下常量的组合:

  - LWA_COLORKEY: 使用 crKey 参数指定的颜色作为透明色。
  - LWA_ALPHA: 使用 bAlpha 参数指定的透明度。

通过调用 SetLayeredWindowAttributes 方法,你可以实现窗口的透明效果。这在一些特殊的 UI 设计中可能会用到。

以下是一个示例,在窗口创建时设置透明度和颜色键:
BOOL CMyWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    // 设置窗口透明度为半透明
    SetLayeredWindowAttributes(RGB(255, 0, 255), 128, LWA_COLORKEY | LWA_ALPHA);

    return 0;
}

在这个示例中,RGB(255, 0, 255) 表示颜色键为洋红色,透明度为 128。这样,窗口上的洋红色部分将变为透明。请注意,要使窗口支持层叠窗口特性,需要在窗口的样式中包含 WS_EX_LAYERED。


转载请注明出处:http://www.pingtaimeng.com/article/detail/23555/MFC/CWnd