为什么CreateWindowEx默认会添加WS_CAPTION?

时间:2017-07-20 10:52:28

标签: c++ winapi

我正在尝试按CreateWindowEx创建一个窗口,但是即使我将dwExStyle dwStyle值设为0,窗口仍然具有WS_CAPTION样式。

代码段如下:

   _hWnd = CreateWindowExW(iExStyle, pszClassName, pszTitle, iStyle | WS_CLIPCHILDREN, dX, dY, dWidth, dHeight,
                            hWndParent, 0, hInstance, NULL); 
   ASSERT(GetWindowLong(_hWnd, GWL_STYLE) & WS_CAPTION == 0); //<---- This will failed.

2 个答案:

答案 0 :(得分:2)

dwStyle = 0x00000000L表示WS_OVERLAPPED or WS_TILED,此窗口有标题栏和边框。

Window Styles

答案 1 :(得分:1)

正如emax所说,WS_OVERLAPPED(0)是默认值,结果为:

  

窗口是重叠的窗口。重叠窗口具有标题栏和边框。与WS_TILED样式相同。

如果要创建子窗口,则必须指定WS_CHILD,如果要创建&#34;弹出窗口&#34;在窗口中,您必须使用WS_POPUPWS_POPUPWINDOW

例如,工具提示会使用WS_POPUPWS_EX_TOOLWINDOW + WS_EX_TOPMOST ......