很多同学在绘制UI时喜欢将窗口或者对话框设置成无边框无标题栏样式,然后在客户区里就可以”胡作非为“了,想干什么都行
然而新手们包括笔者以前都遇到的一个问题是:对于对话框来说直接这样设置:
ModifyStyle(WS_CAPTION | WS_THICKFRAME, 0, SWP_FRAMECHANGED);
是不完美的,他们会发现在对话框的情况下,那个border还是存在,最后怎么设置都不可行
DWORD dwStyle = GetStyle();//获取旧样式 DWORD dwNewStyle = WS_OVERLAPPED | WS_VISIBLE| WS_SYSMENU |WS_MINIMIZEBOX |WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_CLIPSIBLINGS; dwNewStyle&=dwStyle;//按位与将旧样式去掉 SetWindowLong(m_hWnd,GWL_STYLE,dwNewStyle);//设置成新的样式 DWORD dwExStyle = GetExStyle();//获取旧扩展样式 DWORD dwNewExStyle = WS_EX_LEFT |WS_EX_LTRREADING |WS_EX_RIGHTSCROLLBAR; dwNewExStyle&=dwExStyle;//按位与将旧扩展样式去掉 SetWindowLong(m_hWnd,GWL_EXSTYLE,dwNewExStyle);//设置新的扩展样式 //告诉windows:我的样式改变了,窗口位置和大小保持原来不变! SetWindowPos(NULL,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED);
原文地址: