Fenster im Vollbildmodus starten



  • HI,
    Ich will mein Fenster in Vollbild haben. Das klappt auch am Anfang, wechselt
    aber wieder in den Fenstermodus und ich find den Fehler nicht.

    #define WIN32_LEAN_AND_MEAN
    #define WINDOW_CLASS_NAME L"Test05"
    
    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code)&0x8000?1:0))
    #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code)&0x8000?0:1))
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <shellapi.h>
    LOGFONT lf;
    
    HWND	main_window_handle = NULL;
    HWND	hWndEingabe			=NULL;
    HINSTANCE	hinstance_app = NULL;
    LRESULT CALLBACK WindowProc(HWND hwnd,
    							UINT msg,
    							WPARAM wparam,
    							LPARAM lparam);
    
    void WriteString(HWND hwnd,TCHAR*str,int x, int y,COLORREF Bk,COLORREF cText);
    
    void SetDisplayMode(long lWidth, long lHeight, long lBPP)
    {
    		DEVMODE dmScreenSettings;								
    		memset(&dmScreenSettings,0,sizeof(dmScreenSettings));	
    		dmScreenSettings.dmSize=sizeof(dmScreenSettings);		
    		dmScreenSettings.dmPelsWidth	= lWidth;				
    		dmScreenSettings.dmPelsHeight	= lHeight;				
    		dmScreenSettings.dmBitsPerPel	= lBPP;					
    		dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFLAGS;
    
    	if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN | CDS_RESET)!=DISP_CHANGE_SUCCESSFUL)
    	{
    		MessageBox(NULL,L"The requested mode is not supported!",L"Error",MB_OK);
    
    	}
    
    }
    
    int WINAPI WinMain (HINSTANCE hinstance, HINSTANCE hprevinstance,
    					LPSTR lpcmdline, int cmndshow)
    {
    	srand( (unsigned)time( NULL ) );
    	WNDCLASS winclass;
    	HWND	hwnd;
    	MSG msg;
    
    	winclass.style	= CS_HREDRAW | CS_VREDRAW;
    	winclass.cbClsExtra	= 0;
    	winclass.cbWndExtra	= 0;
    	winclass.lpfnWndProc	= WindowProc;
    	winclass.hInstance	= hinstance;
    	winclass.hIcon	= LoadIcon(NULL, IDI_APPLICATION);
    	winclass.hCursor	= SetCursor(LoadCursor(NULL, IDC_WAIT));
    	winclass.hbrBackground	=(HBRUSH)GetStockObject(BLACK_BRUSH);
    	winclass.lpszMenuName	= NULL;
    	winclass.lpszClassName	= WINDOW_CLASS_NAME;
    	RegisterClass(&winclass);
    	hinstance_app = hinstance;
    
    	hwnd = CreateWindowEx(NULL,WINDOW_CLASS_NAME, L"Window",
    						 WS_VISIBLE |WS_POPUPWINDOW, 100,100,600,600,
    						NULL, NULL, hinstance, NULL);
    
    	main_window_handle=hwnd;
    	SetDisplayMode(1024,768,32);
    
    	while (true)
    	{
    	if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    		{
    			if(msg.message == WM_QUIT)
    				break;
    			TranslateMessage(&msg);
    			DispatchMessage(&msg);
    		}
    	}
    	return (msg.wParam);
    }
    
    LRESULT CALLBACK WindowProc(HWND hwnd,
    							UINT msg,
    							WPARAM wparam,
    							LPARAM lparam)
    {
    	PAINTSTRUCT ps;		
    	HDC			hdc;
    
    	switch (msg)
    	{
    	case WM_CREATE:
    		{
    			return(0);
    		}
    		break;
    
    	case WM_CHAR:
    		{	
    			return(0);
    		}
    		break;
    	case WM_PAINT:
    		{
    
    			hdc = BeginPaint(hwnd,&ps);
    			EndPaint(hwnd,&ps); 
    			return(0);
    		}
    		break;
    	case WM_DESTROY:
    		{
    			PostQuitMessage(0);
    			return(0);
    		}
    		break;
    	case WM_LBUTTONDOWN:
    		{	
    			return 0;
    		}
    	case WM_RBUTTONDOWN:
    		{	
    			SetDisplayMode(1024,768,32);
    
    			return 0;
    		}
    	default:
    		break;
    	}
    	return(DefWindowProc(hwnd,msg,wparam,lparam));
    }
    
    void WriteString(HWND hwnd,TCHAR*str,int x, int y,COLORREF Bk,COLORREF cText)
    {
    
    	HFONT fnt;
    
    	HDC dc;
    	RECT r;
    	dc = GetDC(hwnd);
    	GetClientRect(hwnd,&r);
    	r.top=y;
    	r.left=x;
    	SetRect(&r,x,y,x+61,y+15);
    	SetBkColor(dc,Bk);
    	SetTextColor(dc,cText);
    	lf.lfHeight=15;
    	swprintf(lf.lfFaceName,L"Arial Unicode MS");
    	FillRect(dc,&r,(HBRUSH)GetStockObject(WHITE_BRUSH));
    	fnt = CreateFontIndirect(&lf);
    	SelectObject(dc, fnt);
    	DrawText(dc,str,-1,&r,0);
    
    	ReleaseDC(hwnd, dc);
    	DeleteObject(fnt);
    }
    


  • habs inzwischen selbst geschafft:

    #define WIN32_LEAN_AND_MEAN
    #define WINDOW_CLASS_NAME L"Test05"
    
    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code)&0x8000?1:0))
    #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code)&0x8000?0:1))
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <shellapi.h>
    LOGFONT lf;
    
    HWND	main_window_handle = NULL;
    HWND	hWndEingabe			=NULL;
    HINSTANCE	hinstance_app = NULL;
    LRESULT CALLBACK WindowProc(HWND hwnd,
    							UINT msg,
    							WPARAM wparam,
    							LPARAM lparam);
    
    void WriteString(HWND hwnd,TCHAR*str,int x, int y,COLORREF Bk,COLORREF cText);
    
    void SetDisplayMode(long lWidth, long lHeight, long lBPP)
    {
    
    	RECT windowRect;
    
    	windowRect.top = 0;
    	windowRect.left = 0;
    	windowRect.bottom = 768;
    	windowRect.right = 1024;
    
    		DEVMODE dmScreenSettings;								
    		memset(&dmScreenSettings,0,sizeof(dmScreenSettings));	
    		dmScreenSettings.dmSize=sizeof(dmScreenSettings);		
    		dmScreenSettings.dmPelsWidth	= lWidth;				
    		dmScreenSettings.dmPelsHeight	= lHeight;				
    		dmScreenSettings.dmBitsPerPel	= lBPP;					
    		dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
    
    	if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN | CDS_RESET)!=DISP_CHANGE_SUCCESSFUL)
    	{
    		MessageBox(NULL,L"The requested mode is not supported!",L"Error",MB_OK);
    
    	}
    
    	AdjustWindowRectEx(&windowRect, WS_POPUP, FALSE, WS_EX_APPWINDOW);
    }
    
    int WINAPI WinMain(HINSTANCE hInstance,	HINSTANCE hPrevInstance,
    		   LPSTR lpCmdLine, int	nShowCmd)
    {
    	WNDCLASSEX	wc;	
    	HWND hwnd;
    	MSG		msg;
    	DWORD dwExStyle, dwStyle;
    	int width=1024,height=768,bits=32;
    	bool	done=FALSE;
    	RECT windowRect;
    
    	windowRect.top = 0;
    	windowRect.left = 0;
    	windowRect.bottom = height;
    	windowRect.right = width;
    
    	wc.cbSize		= sizeof(WNDCLASSEX);	
    	wc.style		= CS_HREDRAW | CS_VREDRAW;
    	wc.lpfnWndProc		= WindowProc;
    	wc.cbClsExtra		= 0;
    	wc.cbWndExtra		= 0;
    	wc.hInstance		= hInstance;	
    	wc.hIcon		= LoadIcon(NULL, IDI_APPLICATION);
    	wc.hCursor		= LoadCursor(NULL, IDC_ARROW);
    	wc.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);	
    	wc.lpszMenuName		= NULL;
    	wc.lpszClassName	= L"OpenGL";
    	wc.hIconSm		= LoadIcon(NULL,IDI_WINLOGO);
    
    	RegisterClassEx(&wc);
    
    	DEVMODE devModeScreen;
    	memset(&devModeScreen, 0,sizeof(devModeScreen));
    	devModeScreen.dmSize = sizeof(devModeScreen);
    	devModeScreen.dmPelsWidth = width;
    	devModeScreen.dmPelsHeight = height;
    	devModeScreen.dmBitsPerPel = bits;
    	devModeScreen.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
    
    	ChangeDisplaySettings(&devModeScreen, CDS_FULLSCREEN);
    
    	dwExStyle = WS_EX_APPWINDOW;
    	dwStyle = WS_POPUP;
    	ShowCursor(FALSE);
    
    	AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle);
    
    	hwnd=CreateWindowEx(dwExStyle,
    			    L"OpenGL",	
    			    L"glwindow",
    			    dwStyle | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 
    			    0,0,
    			    windowRect.right - windowRect.left,
    			    windowRect.bottom - windowRect.top,
    			    NULL,
    			    NULL,
    			    hInstance,	
    			    NULL);
    
    	ShowWindow(hwnd, SW_SHOW);
    	UpdateWindow(hwnd);
    
    	while(!done)
    	{
    		PeekMessage(&msg,NULL,0,0,PM_REMOVE);	
    
    			if (msg.message==WM_QUIT)
    			{
    				done=TRUE;
    			}
    			else
    			{
    				TranslateMessage(&msg);	
    				DispatchMessage(&msg);
    			}
    	}
    	return (msg.wParam);
    }
    
    LRESULT CALLBACK WindowProc(HWND hwnd,
    							UINT msg,
    							WPARAM wparam,
    							LPARAM lparam)
    {
    	PAINTSTRUCT ps;		
    	HDC			hdc;
    
    	switch (msg)
    	{
    	case WM_CREATE:
    		{
    			return(0);
    		}
    		break;
    
    	case WM_CHAR:
    		{	
    			return(0);
    		}
    		break;
    	case WM_PAINT:
    		{
    
    			hdc = BeginPaint(hwnd,&ps);
    			EndPaint(hwnd,&ps); 
    			return(0);
    		}
    		break;
    	case WM_DESTROY:
    		{
    			PostQuitMessage(0);
    			return(0);
    		}
    		break;
    	case WM_LBUTTONDOWN:
    		{	
    			return 0;
    		}
    	case WM_RBUTTONDOWN:
    		{	
    			return 0;
    		}
    	default:
    		break;
    	}
    	return(DefWindowProc(hwnd,msg,wparam,lparam));
    }
    
    void WriteString(HWND hwnd,TCHAR*str,int x, int y,COLORREF Bk,COLORREF cText)
    {
    
    	HFONT fnt;
    
    	HDC dc;
    	RECT r;
    	dc = GetDC(hwnd);
    	GetClientRect(hwnd,&r);
    	r.top=y;
    	r.left=x;
    	SetRect(&r,x,y,x+61,y+15);
    	SetBkColor(dc,Bk);
    	SetTextColor(dc,cText);
    	lf.lfHeight=15;
    	swprintf(lf.lfFaceName,L"Arial Unicode MS");
    	FillRect(dc,&r,(HBRUSH)GetStockObject(WHITE_BRUSH));
    	fnt = CreateFontIndirect(&lf);
    	SelectObject(dc, fnt);
    	DrawText(dc,str,-1,&r,0);
    
    	ReleaseDC(hwnd, dc);
    	DeleteObject(fnt);
    }
    

Anmelden zum Antworten