我正在努力将一些互操作代码从C++中的DWM移植到C#。DWMWINDOWATTRIBUTE枚举只显式定义一个值,我想知道其余的值(注释)是否正确?
typedef enum _DWMWINDOWATTRIBUTE {
DWMWA_NCRENDERING_ENABLED = 1,
DWMWA_NCRENDERING_POLICY, // 2
DWMWA_TRANSITIONS_FORCEDISABLED, // 3
DWMWA_ALLOW_NCPAINT, // 4
DWMWA_CAPTION_BUTTON_BOUNDS, // 5
DWMWA_NONCLIENT_RTL_LAYOUT, // 6
DWMWA_FORCE_ICONIC_REPRESENTATION, // 7
DWMWA_FLIP3D_POLICY, // 8
DWMWA_EXTENDED_FRAME_BOUNDS, // 9
DWMWA_HAS_ICONIC_BITMAP, // 10
DWMWA_DISALLOW_PEEK, // 11
DWMWA_EXCLUDED_FROM_PEEK, // 12
DWMWA_CLOAK, // 13
DWMWA_CLOAKED, // 14
DWMWA_FREEZE_REPRESENTATION, // 15
DWMWA_LAST // 16
} DWMWINDOWATTRIBUTE;发布于 2014-11-10 07:29:29
是的,在C++03和C++11标准中,7.2枚举声明dcl.enum
...An枚举器-没有初始化器的定义给出了枚举器通过将前一个枚举器的值增加一个而得到的值。
还要注意,在没有初始化器的情况下,第一个枚举值是0。来自同一节:
如果第一个枚举数没有初始化器,则对应常量的值为零。
发布于 2014-11-10 07:34:17
是的枚举值会自动递增。在C#中,您还可以使用相同的语法
公共枚举_DWMWINDOWATTRIBUTE { DWMWA_NCRENDERING_ENABLED = 1,.}
发布于 2014-11-10 07:50:28
是的,这是正确的,如果您为第一个条目提供了一个值,那么所有下一个条目都是通过将prev enum的值增加1来获得的。
在这种情况下,由于您给第一个枚举条目一个值,下一个条目是2,3,4,.分别使用。
如果您不提供它,那么它以0开头(默认情况下)
https://stackoverflow.com/questions/26838758
复制相似问题