Bootstrap

窗口样式WS_CLIPSIBLINGS和WS_CLIPCHILDREN

WS_CLIPSIBLINGS和WS_CLIPCHILDREN是Windows编程中用于设置窗口样式的宏定义。以下是它们各自的含义:

WS_CLIPSIBLINGS:

  • 含义:该样式用于裁剪各子窗口。具体来说,当某个子窗口设置了WS_CLIPSIBLINGS样式,并且与其他兄弟子窗口重叠时,它不会在重叠的区域绘制内容。这有助于避免在不同子窗口的重叠区域出现绘图错误或重叠。
  • 应用场景:当两个或多个子窗口可能重叠时,使用WS_CLIPSIBLINGS可以确保每个子窗口只在其自己的区域内进行绘制,而不会影响到其他兄弟子窗口。
  • 注意事项:WS_CLIPSIBLINGS样式仅适用于具有WS_CHILD样式的窗口。

WS_CLIPCHILDREN:

  • 含义:该样式表示父窗口不对子窗口区域进行绘制。默认情况下,父窗口会在其子窗口的背景上进行绘制。但是,如果父窗口设置了WS_CLIPCHILDREN样式,它将不再绘制子窗口的背景区域,而是让子窗口自己负责背景的绘制。
  • 应用场景:当父窗口与子窗口的绘制逻辑相互独立,或者希望子窗口完全控制自己的背景绘制时,可以使用WS_CLIPCHILDREN样式。
  • 注意事项:无特定注意事项,但需要注意的是,设置WS_CLIPCHILDREN样式后,父窗口将不再绘制子窗口的背景,因此需要确保子窗口能够正确地处理自己的背景绘制。

总结来说,WS_CLIPSIBLINGS和WS_CLIPCHILDREN都是用于控制窗口绘制行为的样式。前者用于裁剪兄弟子窗口之间的重叠区域,后者用于控制父窗口是否绘制子窗口的背景。

设置窗口样式:

auto style = GetWindowLong(m_hWnd, GWL_STYLE);
if (!(style & WS_CLIPSIBLINGS))
	style |= WS_CLIPSIBLINGS;
SetWindowLongPtr(m_hWnd, GWL_STYLE, style);
;