Winapi 通知区弹出链接区

Winapi 通知区弹出链接区,winapi,windows-7,windows-8,flyout,Winapi,Windows 7,Windows 8,Flyout,我使用WinAPI在通知区域中创建了一个弹出窗口,我的目标是使其与单击通知区域中的一些图标(如音量图标)时显示的弹出窗口相似 我已经成功地使它的外观和行为与其他的相似,但有一件事我似乎不明白。弹出窗口的链接区域有一个深蓝色的背景,并且在Windows7和Windows8之间的外观有细微的差别。在Windows7中可以看到它的图片 我通过使用WM_PAINT消息手动将弹出式窗口的链接区域绘制为正确的颜色(包括该部分最顶部的渐变),实现了这一点,但我觉得这太麻烦了,特别是因为它不受窗口中主题更改的

我使用WinAPI在通知区域中创建了一个弹出窗口,我的目标是使其与单击通知区域中的一些图标(如音量图标)时显示的弹出窗口相似

我已经成功地使它的外观和行为与其他的相似,但有一件事我似乎不明白。弹出窗口的链接区域有一个深蓝色的背景,并且在Windows7和Windows8之间的外观有细微的差别。在Windows7中可以看到它的图片

我通过使用
WM_PAINT
消息手动将弹出式窗口的链接区域绘制为正确的颜色(包括该部分最顶部的渐变),实现了这一点,但我觉得这太麻烦了,特别是因为它不受窗口中主题更改的影响。例如,如果我设置“Windows经典”主题,该区域应为灰色而不是蓝色

因此,我的问题是,我是否遗漏了一些东西,即如何在不手动绘制窗口的情况下实现这一点。我注意到Win7中资源管理器窗口中的详细信息窗格具有相同的外观。我找了不少答案,但还没有找到任何答案。这是我第一次使用WinAPI做GUI,所以我的经验很少,因此我假设有一些我不知道的东西

更新:

我确实设法弄明白了如何在不手动绘制的情况下绘制此区域。可以使用
openmotedata
DrawThemeBackground
功能绘制

HTHEME aeroTheme=开放主题数据(hWnd,L“弹出型”)
DrawThemeBackground(aeroTheme、hdc、弹出链接区、0、&rect、&rect)


这显然只在启用了主题的情况下才有效,因此对于非主题的情况,我会使用适当的颜色绘制一个普通矩形。

我不是WinAPI专家,因此我无法提供任何建议,说明如何在没有手动绘制的情况下实现所需的外观

但是,如果您成功地实现了特定颜色主题的外观,我建议您在创建画笔进行绘画时,查看并使用此选项。这将允许您根据已设置的主题获得正确的颜色。可以找到更多信息(包括样例表)


希望这有帮助。

谢谢,我会调查的。