c++ Windows链接子系统问题



使用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。例如,在一个场景中,窗口边框可能包含在宽度/高度中。

最新更新