C++ 如何绘制类似Windows 7任务栏的着色按钮

C++ 如何绘制类似Windows 7任务栏的着色按钮,c++,winapi,visual-studio-2005,windows-7,C++,Winapi,Visual Studio 2005,Windows 7,Windows 7任务栏按钮绘制在阴影背景上。颜色阴影会在鼠标位于按钮上方的位置产生某种反应 我想在我的应用程序中使用这样的按钮。我该怎么做呢?我相信它们是作为GPU上的着色器程序实现的。这只是一个简单的程序,它获取光标位置,并根据与该位置的距离计算每个像素的亮度。也许可以试试 后台绘图 给它一个BS_按钮常数。我曾在Windows XP中使用它来绘制毛绒蓝色XP主题控件,但在Aero中没有,但值得一试。它使用了新的动画api(其中一些存在于Vista中,在7中进行了扩展)。没有魔法样式可设置

Windows 7任务栏按钮绘制在阴影背景上。颜色阴影会在鼠标位于按钮上方的位置产生某种反应


我想在我的应用程序中使用这样的按钮。我该怎么做呢?

我相信它们是作为GPU上的着色器程序实现的。这只是一个简单的程序,它获取光标位置,并根据与该位置的距离计算每个像素的亮度。

也许可以试试

后台绘图


给它一个BS_按钮常数。我曾在Windows XP中使用它来绘制毛绒蓝色XP主题控件,但在Aero中没有,但值得一试。

它使用了新的动画api(其中一些存在于Vista中,在7中进行了扩展)。没有魔法样式可设置,您仍然需要自己绘制。

效果称为“颜色热跟踪”。似乎没有专门的API来实现这一点。a中有一些关于它的注释:

我从Rudi Grobler那里找到了一些源代码,但做了类似的事情:


如果我没记错的话,它们在具有非WDDM驱动程序的VM中工作,因此还应该有一个软件算法。它们是吗?我以为当空气玻璃关闭时,他们就残疾了。不管怎么说,如果你用软件做,算法是一样的。只是慢一点。我认为这基本上是一个简单的径向梯度,随着鼠标指针移动。当鼠标靠近按钮顶部移动时,会出现第二个渐变。这就是你想知道的吗?你是不是在寻找一个像任务栏一样随时可用的按钮顺便说一句,我刚刚检查过,至少在启用Aero的情况下,按钮不会显示为窗口,整个按钮列表是一个窗口。这意味着按钮可能是手动绘制的。但是,UISpy单独显示按钮(Windows UI自动化)。谢谢您的支持。你是对的。整个Windows7任务栏是一个窗口。XP中也是如此,尽管窗口类在那里是不同的。即使是新的功能区也是如此:应用程序窗口的所有功能区都是一个类型为“NetUIHWND”的窗口。为什么我们要使用windowmanager?谢谢,虽然不是解决方案,但这是一个很好的提示。我有两三个地方试着画我自己的按钮状物体。使用DrawThemeBackground,我可以通过Windows以原始方式完成它。