单个显示屏下如果我们需要最大化窗口的时候我们如果直接调用
ShowWindow(SW_MAXIMIZE); //最大化show窗口
但是存在会遮挡Windows的标题栏这个时候我们可以用Windows给我们提供的方法
CRect rcWorkArea;
SystemParametersInfo(SPI_GETWORKAREA,0,&rcWorkArea,0); //获取工作区域的大小
MoveWindow(&rcWorkArea);
OnNcPaint();
这样可以处理掉遮挡标题栏的问题,但是存在一个多屏的问题 (Windows提供的这个SPI_GETWORKAREA只能适用于单屏)如果多个显示屏的话程序会被默认移动到主屏上,同样Windows也提供了一个 SPI_SETWORKAREA 但是在Win10下是有问题。
方法一:
同样我们也可以根据下面的方法去获取屏幕虚拟大小在通过计算解决
//获取坐标的时候用VIRTUALSCREEN参数 这样获取下来的是包含多个屏幕的虚拟屏幕
GetSystemMetrics(SM_CXVIRTUALSCREEN);
GetSystemMetrics(SM_CYVIRTUALSCREEN);
GetSystemMetrics(SM_XVIRTUALSCREEN );
GetSystemMetrics(SM_YVIRTUALSCREEN );
方法二:
//直接调用ShowWindow(SW_MAXIMIZE)
//后续在 void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) //函数中处理
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
lpMMI->ptMaxSize.y = GetSystemMetrics(SM_CYFULLSCREEN) + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYDLGFRAME); //处理标题栏被遮挡问题
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}