转载的,以后参考
不带标题栏的窗口最大化分两种情况,覆盖任务栏和不覆盖任务栏:
第一种情况:覆盖任务栏
ShowWindow(SW_SHOWMAXIMIZED);
第二种情况:不覆盖任务栏
int cx = GetSystemMetrics(SM_CXFULLSCREEN);
int cy = GetSystemMetrics(SM_CYFULLSCREEN);
CRect rt;
SystemParametersInfo(SPI_GETWORKAREA,0,&rt,0);
cy = rt.bottom;
MoveWindow(0, 0, cx, cy);
带标题栏的窗口最大化:
第一种情况:覆盖任务栏,在OnSize(UINT nType, int cx, int cy)里面
WINDOWPLACEMENT lwndpl;
WINDOWPLACEMENT * lpwndpl;
lpwndpl=&lwndpl;
GetWindowPlacement(lpwndpl);
if (lpwndpl->showCmd != SW_SHOWMAXIMIZED)
{
//这里必须是GetSystemMetrics(SM_CXSCREEN) - 1才能显示全屏的效果
SetWindowPos(&wndTopMost, 0, 0, GetSystemMetrics(SM_CXSCREEN) - 1, GetSystemMetrics(SM_CYSCREEN), 0);
}
第二种情况:不覆盖任务栏
CRect rcWorkArea;
GetClientRect(&rcWorkArea);
SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, 0); //获得窗口工作区域(除去任务栏)
MoveWindow(&rcWorkArea);