3

WindowsSDKを使用してC++で記述されたプログラムをコンパイルする場合、を指定する-subsystem:windows,6.1と、ウィンドウの幅が狭くなります。そうしない場合、またはなしで行う場合-subsystem:windows6.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);
4

1 に答える 1

0

Windows7(Win7 = 6.1)でのみサポートされているいくつかのWindowsスタイルを指定しているのではないかと思います。引数付きの完全なCreateWindow呼び出しを投稿し、Aeroをオフにしてみてください。たとえば1つのシナリオでは、ウィンドウの境界線を幅/高さに含めることができます。

于 2011-09-24T03:50:13.077 に答える