Когда я передаю размеры моего экрана и позицию (0, 0)
в функции SetWindowPos()
или MooveWindow()
, они работают, но заставляют мое окно (оно имеет флаги WS_POPUP
и WS_EX_LAYERED
) вести себя по-разному : обычно, если у окна есть область, которая перекрывается с панелью задач, панель задач будет отображаться поверх окна, но в этом случае окно полностью скрывает панель задач. И цветовой ключ не работает правильно. Такое поведение напоминает полноэкранное окно. Моя проблема заключается в том, что я хочу, чтобы моя программа могла сделать так, чтобы windonw покрывал все пиксели монитора, у которого нет панели задач, но оставляю возможность использовать цветную клавишу, что невозможно из-за вызова такой функции, как эта сделает окно полноэкранным, который ломает цветовой ключ. Поэтому я хотел бы знать, как не дать SetWindowPos()
сделать окно полноэкранным, даже если я пропущу размеры экрана, например, с флагом или другой функцией.
РЕДАКТИРОВАТЬ: И если есть не является решением (окно с размерами экрана должно быть полноэкранным), пожалуйста, скажите мне.
Как я создаю окно:
WindowClass.cbSize = sizeof(WNDCLASSEX);
WindowClass.lpfnWndProc = WindowProcedure;
WindowClass.lpszClassName = L"WindowsClass";
WindowClass.hbrBackground = CreateSolidBrush(RGB(30, 30, 30));
// ...
HWND Window = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_LAYERED,
L"WindowsClass", L"FinalWindow", WS_POPUP | WS_MINIMIZEBOX |
WS_MAXIMIZEBOX, 100, 100, 500, 500, NULL, NULL, NULL, NULL);
SetLayeredWindowAttributes(Window, RGB(30, 30, 30), 0, LWA_COLORKEY);
Как я использую SetWindowPos () :
int ScreenWidth = GetDeviceCaps(FinalWindowDeviceContext, HORZRES);
int ScreenHeight = GetDeviceCaps(FinalWindowDeviceContext, VERTRES);
SetWindowPos(FinalWindow, NULL, 0, 0, ScreenWidth, ScreenHeight, 0);