C++ Windows Link Подсистема Вопрос
При использовании Windows SDK для компиляции программы, написанной на 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);
1 ответ
Я подозреваю, что вы указываете некоторые стили Windows, которые поддерживаются только в Windows7 (Win7 = 6.1). Отправьте полный вызов CreateWindow с аргументами, а также попробуйте отключить Aero. Граница окна может быть включена в ширину / высоту, например, в одном сценарии.