有的时候定制窗口,隐藏系统窗口的标题栏,自己绘制最大最小化和关闭按钮,这样当窗口最大化时会发现最顶部一小部分超出了屏幕区域
解决方法是处理WM_GETMINMAXINFO消息/en-us/library/windows/desktop/ms632626(v=vs.85).aspx
示例:
else if(WM_GETMINMAXINFO == uMsg){MONITORINFO oMonitor = {};oMonitor.cbSize = sizeof(oMonitor);::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor);CDuiRect rcWork = oMonitor.rcWork;rcWork.Offset(-rcWork.left, -rcWork.top);LPMINMAXINFO lpMMI = (LPMINMAXINFO) lParam;lpMMI->ptMaxPosition.x= rcWork.left;lpMMI->ptMaxPosition.y= rcWork.top;lpMMI->ptMaxSize.x= rcWork.right;lpMMI->ptMaxSize.y= rcWork.bottom;return 0;}
结果如下图