У меня есть пользовательский интерфейс, который может работать в полноэкранном режиме. При переходе на весь экран, я звоню ниже последовательности:является блокировкой SetWindowRgn?
ShowWindow(hwnd, SW_HIDE);
SetWindowRgn(hwnd, NULL, TRUE);
SetWindowPos(hwnd, 0, left, top, right, bottom, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER)) ;
ShowWindow(hwnd, SW_SHOW);
У меня ошибка, окно первого, отображаемого в верхнем левом углу с предыдущим размером и только затем переходит в полный размер экрана , Я подозреваю, что это может быть связано с тем, что вызов SetWindowRgn()
является асинхронным. и фактически выполняется после ShowWindow()
. Я знаю из документации, что все остальные вызовы блокируются, но нет комментариев о SetWindowRgn()
, блокируется ли это или нет. Как я могу быть уверен в этом? Благодарю.
Возможно, вы наблюдаете за задержкой в оформлении вашего окна? Когда вы изменяете его размер, окна перемещают существующие биты в новое место и аннулируют вновь добавленную область. Вы можете попытаться добавить флаг SWP_NOCOPYBITS в ваш вызов SetWindowPos(). Или вы можете изменить размер окна в положение вне экрана, обновить его и вернуться обратно. –