2011-09-24 99 views
3

當使用Windows SDK編譯用C++編寫的程序時,如果指定-subsystem:windows,6.1, 窗口的寬度較小。如果我沒有,或者-subsystem:windows沒有6.1,寬度是正常的。C++ Windows鏈接子系統問題

我很好奇爲什麼這樣做,並且如果有辦法讓它保持相同的寬度,而不管我通過什麼命令行鏈接。

編輯:所以它的高度,高度和寬度都不同。如果我用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); 
+0

哇,等等,什麼? Windows SDK有一個C++編譯器? – Mehrdad

+0

@Mehrdad是啊? cl.exe和link.exe。 – Josh

+0

我認爲這是Visual C++的一部分,也是WDK的一部分,不是SDK的一部分...它在什麼文件夾中? – Mehrdad

回答

0

我懷疑你指定一些窗口樣式僅在Windows7(Win7 = 6.1)中受支持。使用參數發佈完整的CreateWindow調用,並嘗試關閉Aero。例如,在一個場景中,窗口邊框可以包含在寬度/高度中。