CS_HREDRAW | CS_VREDRAW 它有什么作用?

use*_*920 4 c c++ windows bits class

structure.style = CS_HREDRAW | CS_VREDRAW;
Run Code Online (Sandbox Code Playgroud)

这是我发现的用于注册窗口类并设置调整大小设置的代码行,但它是如何工作的,结构的值style是什么?

中间的管道符号|是按位的,OR所以它会设置style为位的组合,CS_HREDRAW | CS_VREDRAW所以这对 Windows 意味着什么,它如何知道两者是否都设置了,一个是还是没有?

可能是我多虑了...

Ser*_*lis 6

标志可以被 OR'd 的原因是因为它们被故意写入而不是相互抵消。

如果您查看这些标志的值,您将看到:

CS_HREDRAW = 0x0001 = 0000 0000 0000 0001
CS_VREDRAW = 0x0002 = 0000 0000 0000 0010
Run Code Online (Sandbox Code Playgroud)

ORing 这些标志的结果是:

COMBINED = 0x0003 = 0000 0000 0000 0011
Run Code Online (Sandbox Code Playgroud)

这称为位域

该函数知道哪些位对应于每个标志,因此查看设置了哪些位将告诉它如何表现。