win32 api 窗口居中

it2022-05-05  123

在网上搜是窗口居中显示的方法搜到了浪浪仔的win32 C/C++程序窗口居中,用了之后发现虽然窗口居中了,但是比原来变大了许多,后来发现是SetWindowPos时窗口的长宽设置错了,在此记录,并给需要的人。

void CenterWindow(HWND hWnd) { int scrWidth, scrHeight; RECT rect; //获得屏幕尺寸 scrWidth = GetSystemMetrics(SM_CXSCREEN); scrHeight = GetSystemMetrics(SM_CYSCREEN); //取得窗口尺寸 GetWindowRect(hWnd, &rect); //重新设置rect里的值 long width = rect.right - rect.left; long height = rect.bottom - rect.top; rect.left = (scrWidth - width) / 2; rect.top = (scrHeight - height) / 2; //移动窗口到指定的位置 SetWindowPos(hWnd, HWND_TOP, rect.left, rect.top, width, height, SWP_NOSIZE | SWP_NOZORDER); }

另外,对话框有center属性可以设置为true,可以让对话框居中。


最新回复(0)