创建动态半透明对话框
使用两种常用技术创建不常见的用户界面。
引言
在启用了 Aero UI 的 Vista 机器上,一定会有一件事从屏幕上跳出来:对话框是半透明的。 这种半透明的用户界面令人耳目一新。 有人可能会误以为这种令人惊叹的用户界面只能在高端 Vista 机器上使用。 事实是,通过少量的努力,您可以使用不太为人所知但简单的 API 在 XP 上复制这种花哨的效果。 更进一步,我们甚至可以动态地调暗或调亮对话框应该具有的透明度。
背景
(可选) 需要对 MFC 有基本的了解。
使用代码
该项目是独立的,使用 MS VC8 构建。 或者,您可以将 .cpp 和 .h 文件复制到您自己的项目中并直接使用它们。
关注点
使用两个 Win32 API 构建半透明对话框非常简单
SetWindowLongPtr
- 设置分层窗口,为下一步做准备。 与SetWindowLongPtr
类似,以前还有一个版本,SetWindowLong
,现在已被最新的 MSDN 更新中的SetWindowLongPtr
替换。SetLayeredWindowAttributes
- 注意它的第三个参数(值范围从 0 到 255),它决定了对话框的不透明度级别。 0 使对话框完全透明,而 255 显示一个实心对话框。
为了使对话框更具交互性,该示例允许用户调整不透明度级别。 它通过重写 PreTranslateMessage
来实现。 在 MFC 应用程序中,PreTranslateMessage
通常是捕获或更改关键组合的默认行为的正确位置。 在此调用中自定义的是两组关键组合
- SHIFT+D:使对话框变暗,这意味着使其不那么透明。
- SHIFT+B:调亮对话框;换句话说,使对话框越来越透明。
将这些小步骤放在一起,您将看到一个非常流畅的对话框,它轻轻地“绘制”在屏幕上。 并且,您可以按键组合来切换对话框的透明度级别。 看到它运动起来真有趣。 尝试一下,享受吧!
历史
- 首次签入日期为 2008 年 8 月 1 日。