structure.style = CS_HREDRAW | CS_VREDRAW;
这是我发现的注册窗口类并设置调整大小设置的代码行,但它是如何工作的?结构体的
style
值将是什么?中间的管道符号
|
是按位OR
,因此它会将style
设置为来自CS_HREDRAW | CS_VREDRAW
的位组合,那么对于Windows来说意味着什么,它将如何知道是否同时设置了两个、一个或都没有?也许我想太多了...
这些标志可以进行按位或操作的原因是它们被有意地编写为不互相抵消。
如果您查看这些标志的值,您会发现:
CS_HREDRAW = 0x0001 = 0000 0000 0000 0001
CS_VREDRAW = 0x0002 = 0000 0000 0000 0010
COMBINED = 0x0003 = 0000 0000 0000 0011
这被称为位域(Bit Field)
函数知道每个标志位对应的位,因此查看哪些位被设置将告诉它如何行动。
CS_HREDRAW
标志位时,水平大小的更改会导致整个窗口重新绘制。否则,水平大小的更改仅会重新绘制新暴露出来的区域。类似地,对于CS_VREDRAW
,其中V
代表“垂直”,垂直大小的更改也遵循同样的规则。 - Cheers and hth. - Alf