DWMWINDOWATTRIBUTE
选项仅适用于某些 Windows 版本,例如:
DWMWA_BORDER_COLOR
从 Windows 11 Build 22000 开始支持此值。
如何使用预处理器检查构建版本?像这样的东西:
#if WINDOWS_BUILD >= 22000
COLORREF hexCol = 0x00505050;
DwmSetWindowAttribute(GetWin32Handle(), DWMWINDOWATTRIBUTE::DWMWA_BORDER_COLOR, &hexCol, sizeof(hexCol));
#endif
我知道
WINVER
宏,但它只能用于检查主 Windows 版本,而不是特定版本。可能的值也只适用于 Windows 10,所以你甚至不能用它来检查 Windows 11:
#define _WIN32_WINNT_NT4 0x0400
#define _WIN32_WINNT_WIN2K 0x0500
#define _WIN32_WINNT_WINXP 0x0501
#define _WIN32_WINNT_WS03 0x0502
#define _WIN32_WINNT_WIN6 0x0600
#define _WIN32_WINNT_VISTA 0x0600
#define _WIN32_WINNT_WS08 0x0600
#define _WIN32_WINNT_LONGHORN 0x0600
#define _WIN32_WINNT_WIN7 0x0601
#define _WIN32_WINNT_WIN8 0x0602
#define _WIN32_WINNT_WINBLUE 0x0603
#define _WIN32_WINNT_WINTHRESHOLD 0x0A00
#define _WIN32_WINNT_WIN10 0x0A00
如果我无法检查构建版本,是否有其他方法可以检查是否定义了
DWMWA_BORDER_COLOR
?我不能使用#ifdef
,因为它是一个枚举值而不是宏。