我在通知区域中使用WinAPI制作了弹出窗口,我的目标是使其与弹出窗口类似,当您单击通知区域中的某些图标时出现的弹出窗口,如音量图标。通知区域弹出链接区域
我已经成功地使它看起来和行为类似于其他的,但有一件事我似乎无法弄清楚。在弹出窗口的链接区有较深的青色背景并且在Windows 7和Windows 8之间的外观细微的差别的它在Windows 7中的图片可以在这里看到
http://msdn.microsoft.com/en-us/library/windows/desktop/aa511448.aspx#flyouts
我实现这通过使用WM_PAINT
消息以正确的颜色(包括该部分最上面的部分的渐变)手动绘制我的弹出窗口的链接区域,但我觉得这太过分了,特别是因为它不受改变Windows中的主题。例如,如果我设置“Windows Classic”主题,则此区域应该是灰色而不是蓝色。
所以,我的问题是,我没有手动绘制窗口可以实现这个功能。我注意到Win 7的资源管理器窗口中的细节窗格具有相同的外观。我已经搜索了很多答案,但我还没有找到任何答案。这是我第一次使用WinAPI做GUI,所以我没有什么经验,因此我假设有一些我不知道的东西。
UPDATE:
我还是设法弄清楚如何无需手动画吧得出这样的区域。它可以通过使用OpenThemeData
和DrawThemeBackground
功能
HTHEME aeroTheme = OpenThemeData(HWND,L “弹出”);
DrawThemeBackground(aeroTheme,hdc,FLYOUT_LINKAREA,0,& rect,& rect);
这显然只适用于启用主题的情况,所以对于非主题的情况,我使用适当的颜色绘制正常的矩形。
谢谢,我会研究它。 – AFA 2013-04-30 11:09:21