2011-09-24 1 views
3

Windows SDK를 사용하여 C++에서 작성된 프로그램을 컴파일 할 때 -subsystem:windows,6.1을 지정하면 창의 너비가 더 작아집니다. 내가하지 않거나 없이 -subsystem:windows을 입력하면 너비는 정상입니다.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를 해제하십시오. 예를 들어 하나의 시나리오에서 윈도우 경계가 너비/높이에 포함될 수 있습니다.