wahre fenstergröße



  • wenn ich ein fenster mit createwindow() erstelle, stimmt die größe dannach nicht. wie bekomme ich die größe ohne rand z.B. auf wirkliche 100x100 Pixel?



  • GetSystemMetrics und dann n bisschen rechnen...





  • ok... besser 😉
    nein, sagen wir einfacher ! 😃



  • AdjustWindowRect



  • nirsaja schrieb:

    ok... besser 😉
    nein, sagen wir einfacher ! 😃

    hab mich auch überzeugen lassen 😉



  • wenn ich ein fenster z.B. mit 100x100 erstelle, bekomme ich 100x114 raus. Ich hab border und clientbereich gemessen und die 114 haben damit nichts zu tun.
    Ein Fenster mit 64x32 ist ca. 112x32 groß
    CreateWindow() müsste doch egtl. funktionieren.
    Ich habe auch noch SetWindowPos() probiert, weil in der MSDN ausdrücklich Breite und Höhe in Pixel steht. Funktioniert genauso wenig

    #include <windows.h>
    #include "Main.h"
    #include "resource.h"
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow) {
    	char        szAppName[] = "...";
    	HWND        hwnd;
    	MSG         msg;
    	WNDCLASSEX  lpWndClass;
    
    	lpWndClass.cbSize        = sizeof(lpWndClass);
    	lpWndClass.style         = CS_HREDRAW | CS_VREDRAW;
    	lpWndClass.lpfnWndProc   = WndProc;
    	lpWndClass.cbClsExtra    = 0;
    	lpWndClass.cbWndExtra    = 0;
    	lpWndClass.hInstance     = hInstance;
    	lpWndClass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    	lpWndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    	lpWndClass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    	lpWndClass.lpszMenuName  = "IDR_MENU";
    	lpWndClass.lpszClassName = szAppName;
    	lpWndClass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
    
    	RegisterClassEx (&lpWndClass);
    
    	hwnd = CreateWindow(szAppName, "...", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 64, 32, NULL, NULL, hInstance, NULL);
    	SetWindowPos(hwnd, NULL, NULL, NULL, 64, 32, SWP_FRAMECHANGED);
    
    	ShowWindow(hwnd, nCmdShow);
    	UpdateWindow(hwnd);
    
    	while (GetMessage(&msg, NULL, 0, 0)) {
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    	return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
         switch (uMsg) {
    		case WM_CREATE: return 0;
    		case WM_DESTROY :
    			PostQuitMessage (0) ;
    			return 0;
    	}
    	return DefWindowProc (hwnd, uMsg, wParam, lParam);
    }
    

Anmelden zum Antworten