在我们的旧代码中,使用的是Windows扩展样式WS_EX_TOOLWINDOW,这基本上是为了将标题栏显示为狭窄,但是最近在winodws版本中,标题栏并未绘制为狭窄.WS_EX_TOOLWINDOW并未提供狭窄的标题栏在更新的Windows版本中。在单击事件中使标题栏变窄。让我知道是否还有另一种方法可以实现这一目标?
我已经阅读到我们需要处理WM_NCCALCSIZE。但是还有其他方法吗?或者如果这是唯一的方法,那么我如何通过单击按钮来处理它?</ p>
代码段:
HWND hwnd = m_hWnd;
......
DWORD dwStylesEx = ::GetWindowLong( hwnd, GWL_EXSTYLE );
if ( bNarrowTitle == true)
{
dwStylesEx |= WS_EX_TOOLWINDOW;
}
else
{
dwStylesEx &= ~WS_EX_TOOLWINDOW;
}
...
::SetWindowLong( hwnd, GWL_EXSTYLE, dwStylesEx );
答案 0 :(得分:0)
某些窗口数据已缓存,因此使用SetWindowLong进行的更改将不会生效,除非您调用SetWindowPos函数。 具体来说,如果您更改任何框架样式,则必须使用SWP_FRAMECHANGED标志调用SetWindowPos ,以正确更新缓存。
答案 1 :(得分:0)
默认外观不会以任何方式对其进行区分。这表明您将只需要忍受它。
它可能是由于较小的手指不友好而被更改的!
引用:WS_EX_TOOLWINDOW doesn't give look I want
正如您所说,处理WM_NCCALCSIZE
可能是处理非客户区域大小的唯一方法。
引用:How to set the size of the Non-client area of a Win32 window (native)