Winapi 获得托盘区域时钟视觉主题的最佳方法是什么?
系统的托盘区域时钟视觉主题在MSDN中,所以我想微软希望我们能够使用它。我想用它来画我的任务栏带的背景,以便更好地融入托盘区域。当我试图 (空,L“时钟”) 它总是失败。我发现获取该主题的唯一方法是找到实际的时钟窗口,并请求其主题:Winapi 获得托盘区域时钟视觉主题的最佳方法是什么?,winapi,themes,system-tray,Winapi,Themes,System Tray,系统的托盘区域时钟视觉主题在MSDN中,所以我想微软希望我们能够使用它。我想用它来画我的任务栏带的背景,以便更好地融入托盘区域。当我试图 (空,L“时钟”) 它总是失败。我发现获取该主题的唯一方法是找到实际的时钟窗口,并请求其主题: 使用FindWindowEx查找具有Shell\u TrayWnd类的窗口,然后使用classTrayNotifyWnd查找其子窗口,然后使用TrayClockWClass类查找此窗口的子窗口 调用OpenThemeData并传递实际时钟的窗口句柄 显然,内部W
- 使用
查找具有FindWindowEx
类的窗口,然后使用classShell\u TrayWnd
查找其子窗口,然后使用TrayNotifyWnd
类查找此窗口的子窗口TrayClockWClass
- 调用OpenThemeData并传递实际时钟的窗口句柄
问题:是否有任何合理的方法来获取托盘区域的时钟视觉主题?显然,您不能总是将OpenThemeData与NULL一起使用
吉姆·巴里6年前 您需要有一个可以调用SetWindowTheme的HWND。设置 pszSubAppName到“TrayNotifyHoriz”或“TrayNotifyVert”并离开 pszSubIdList为空。然后,您可以使用 pszClassList设置为“TrayNotify” 我完全搞不懂怎么会有人知道这件事。 坦率地说,视觉样式文档非常糟糕,是一个绝对错误 耻辱。
--Jim Barry,MVP(Windows SDK)