使用windows SDK编译c++编写的程序时,如果指定-subsystem:windows,6.1
,窗口的宽度更小了。如果我不这样做,或者只做-subsystem:windows
而不做6.1
,则宽度正常。
我很好奇为什么会这样,如果有一种方法可以使它保持相同的宽度,无论我传递什么命令行给link。
EDIT:所以它也是高度,高度和宽度都是不同的。如果我用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);
我怀疑你指定了一些只在Windows7 (Win7 = 6.1)中支持的windows样式。发布完整的CreateWindow调用和参数,并尝试关闭Aero。例如,在一个场景中,窗口边框可能包含在宽度/高度中。