Zastanawiam się, w jaki sposób utworzyć okno przy użyciu interfejsu Win32 API o konkretnym rozmiarze obszaru roboczego o rozmiarze.WinAPI: Utwórz okno o określonym rozmiarze obszaru roboczego
Kiedy próbuje utworzyć okno stosując następujący fragment kodu, całe okno jest 640x480, z chrom oknie zabiera część obszaru roboczego:
HWND hWnd;
WNDCLASSEX WndClsEx;
ZeroMemory(&WndClsEx, sizeof(WNDCLASSEX));
WndClsEx.cbSize = sizeof(WNDCLASSEX);
WndClsEx.style = CS_HREDRAW | CS_VREDRAW;
WndClsEx.lpfnWndProc = DefWindowProc;
WndClsEx.cbClsExtra = 0;
WndClsEx.cbWndExtra = 0;
WndClsEx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClsEx.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClsEx.lpszMenuName = NULL;
WndClsEx.lpszClassName = TEXT("Title");
WndClsEx.hInstance = hInstance;
WndClsEx.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&WndClsEx);
hWnd = CreateWindowEx( NULL,
TEXT("Title"),
TEXT("Title"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
480,
NULL,
NULL,
hInstance,
NULL);
Zakładając prostą matematykę nie będzie dość rozwiązać problem, jak wziąć pod uwagę rozmiar chromu?
Uwaga: Używam SDL po utworzeniu okna, ale zgaduję to wiąże się z wielkością okna i nie ma wpływu na jego wielkość.
Korekta, oblicza współrzędne obszaru okna na podstawie współrzędnych obszaru klienta. –
@Edmin: Dzięki. Poprawię to. – Ferruccio
[Pokrewna odpowiedź] (http://stackoverflow.com/a/13793660/3427520) o tym, dlaczego 'AdjustWindowRect' nie może być używany z' WS_OVERLAPPED'. – zwcloud