特定のクライアント領域サイズでWin32 APIを使用してウィンドウを作成する方法を知りたいと思っていました。
次のコードを使用してウィンドウを作成しようとすると、ウィンドウ全体が640x480になり、ウィンドウのchromeはクライアント領域の一部を取得します。
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);
単純な数学では問題が完全に解決されないと仮定した場合、chromeサイズをどのように考慮しますか?
注:ウィンドウの作成後にSDLを使用していますが、ウィンドウサイズにバインドされており、サイズに違いはないと思います。
AdjustWindowRect または AdjustWindowRectEx 関数を使用して、必要なクライアント領域サイズを指定してウィンドウサイズを計算できます。