Vollbildmodus mit Win32-API?



  • Hi,

    kann man mit der Win32-API Fenster im den Vollbildmodus (wie bei DirectX und OpenGL) darstellen?

    MfG

    WilMen



  • static void changeDisplay(void)
    {
    	DWORD		dwExStyle;
    	DWORD		dwStyle;
    
    	if (fullscreen)
    	{
    		DEVMODE dmScreenSettings;
    		memset(&dmScreenSettings, 0, sizeof(dmScreenSettings));
    
    		dmScreenSettings.dmSize		= sizeof(dmScreenSettings);
    		dmScreenSettings.dmPelsWidth	= fsWidth;
    		dmScreenSettings.dmPelsHeight	= fsHeight;
    		dmScreenSettings.dmBitsPerPel	= 32;
    		dmScreenSettings.dmFields	= DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
    
    		dwExStyle	= WS_EX_APPWINDOW;
    		dwStyle		= WS_POPUP;
    		SetWindowLongPtr(hWnd, GWL_EXSTYLE, dwExStyle);
    		SetWindowLongPtr(hWnd, GWL_STYLE, dwStyle);
    		SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, fsWidth, fsHeight, SWP_SHOWWINDOW);
    		SetForegroundWindow(hWnd);
    		SetFocus(hWnd);
    		ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
    	}
    	else
    	{
    		dwExStyle	= WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
    		dwStyle		= WS_OVERLAPPEDWINDOW;
    		SetWindowLongPtr(hWnd, GWL_EXSTYLE, dwExStyle);
    		SetWindowLongPtr(hWnd, GWL_STYLE, dwStyle);
    		SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, wmWidth, wmHeight, SWP_SHOWWINDOW);
    		SetForegroundWindow(hWnd);
    		SetFocus(hWnd);
    		ChangeDisplaySettings(NULL, 0);
    	}
    	return;
    }
    

    edit:

    ChangeDisplaySettings(NULL, 0);
    

    könnte auf manchen grafik adaptern probleme machen. in dem fall musst du die
    alten display settings speichern und dann mit

    ChangeDisplaySettings(&dmScreenSettings, 0);
    

    wiederherstellen





  • Danke sothis_,

    ich habe deine Funktion verwendet und es funktioniert super! 🙂

    MfG

    WilMen


Anmelden zum Antworten