WindowsSDKを使用してC++で記述されたプログラムをコンパイルする場合、を指定する-subsystem:windows,6.1
と、ウィンドウの幅が狭くなります。そうしない場合、またはなしで行う場合-subsystem:windows
、6.1
幅は正常です。
なぜこれがこれを行うのか、そしてリンクに渡すコマンドラインに関係なく同じ幅を維持する方法があるかどうか知りたいです。
編集:それはまた、高さ、高さ、幅の両方が異なります。また、Inspect.exeで見ると、毎回同じサイズであると表示されます。
EDIT2:これは、コンソールではなく、CreateWindowで作成されたウィンドウアプリケーションでもあります。
EDIT3:これが私のウィンドウを初期化する完全なコードです:
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(SMALL_ICON));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = g_szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(SMALL_ICON));
g_hMainWnd = CreateWindow(
g_szWindowClass,
t_szWindowTitle,
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT,
392, 250,
NULL,
NULL,
hInstance,
NULL
);
そして、私はこれでウィンドウのサイズを変更します:
SetWindowPos(hWnd, NULL,
(GetSystemMetrics(SM_CXFULLSCREEN)/2)- (392/2),
(GetSystemMetrics(SM_CYFULLSCREEN)/2) - (250/2),
392, 120, SWP_NOZORDER);