系统的托盘区域时钟视觉主题在MSDN中为documented,所以我想微软希望我们能够使用它。我想用它绘制我的任务栏乐队的背景,以便与托盘区域更好地融合。当我尝试
时OpenThemeData(NULL,L“CLOCK”);
总是失败。我发现获得该主题的唯一方法是找到实际的时钟窗口,并请求其主题:
使用FindWindowEx
找到一个Shell_TrayWnd
类的窗口,然后找到类TrayNotifyWnd
的子窗口,然后找到该窗口的TrayClockWClass
类的子窗口。
调用OpenThemeData并传递实际时钟的窗口句柄。
显然,内部Windows窗口类名未记录。虽然上面的方法似乎有用,但我宁愿使用不那么脆弱的东西。
问题:有没有理智的方法来获取托盘区的时钟视觉主题?
答案 0 :(得分:3)
显然你不能总是使用带有NULL的OpenThemeData http://microsoft.public.platformsdk.shell.narkive.com/gkVTBGA2/cannot-open-theme-data-for-tray-notification-area
Jim Barry 6年前
您需要有一个可以调用SetWindowTheme的HWND。组 pszSubAppName为“TrayNotifyHoriz”或“TrayNotifyVert”并离开 pszSubIdList为NULL。然后,您可以使用调用OpenThemeData pszClassList设置为“TrayNotify”。
任何人应该如何计算出这些东西是完全超出我的。 视觉风格文档坦率地说是非常糟糕的,绝对的 耻辱。
- Jim Barry,MVP(Windows SDK)