Find mein Fehler bei OpenGL Vollbild Modus nicht...
-
Hi Leute,
ich wollt grad mal wieder ein Vollbild-Fenstermodus Programm für ein Spiel compilen.
Aber hier liegt auch shcon gleich mien problem, ich kann den fehler verdammt noch mal nicht finden.
Bin ich jetzt ganz duch einander oder sieht einer den fehler ?
Währe dankbar wenn mir einer helfen könnte.#include <windows.h> #include <gl\gl.h> #include <gl\glu.h> #include <gl\glaux.h> HGLRC hRC=NULL; HDC hDC=NULL; HWND hWnd=NULL; HINSTANCE hInstance; bool keys[256]; bool active=TRUE; bool fullscreen=TRUE; LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); GLvoid ReSizeGLScene(GLsizei width,GLsizei height) { if(height==0) { height=1; } glViewport(0,0,width,height); glLoadIdentity(); glMatrixMode(GL_PROJECTION); gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.0f,100.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int InitGL(GLvoid) { glShadeModel(GL_SMOOTH); glClearColor(0.0f,0.0f,0.0f,0.0f); glClearDepth(0.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); return TRUE; } GLvoid KillGLWindow(GLvoid) { if (fullscreen) { ChangeDisplaySettings(NULL,0); ShowCursor(TRUE); } } BOOL CreateGLWindow(char* title,int width,int height,int bits,bool fullscreenflag) {{ GLuint PixelFormat; WNDCLASS wc; DWORD dwExStyle; DWORD dwStyle; RECT WindowRect; WindowRect.left=(long)0; WindowRect.left=(long)width; WindowRect.top=(long)0; WindowRect.bottom=(long)height; if(!RegisterClass(&wc)) { MessageBox(NULL,"Konnte die Registerklassen nicht registrieren","Fehler",MB_OK); return FALSE; } hInstance =GetModuleHandle(NULL); wc.hInstance=hInstance; wc.lpfnWndProc=(WNDPROC)WndProc; wc.lpszMenuName=NULL; wc.lpszClassName="OpenGL"; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hbrBackground=NULL; wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hIcon=LoadIcon(NULL,IDI_WARNING); if(fullscreen) { DEVMODE dmScreenSettings; dmScreenSettings.dmPelsWidth=width; dmScreenSettings.dmPelsHeight=height; dmScreenSettings.dmBitsPerPel=bits; dmScreenSettings.dmFields=DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL; if(ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) { if(MessageBox(NULL,"Konnte nicht im Vollbild Modus starten/nMöchten sie im Fenster Modus starten?","Fehler",MB_YESNO)==IDYES) { fullscreen=FALSE; } } if(fullscreen) { dwExStyle=WS_EX_APPWINDOW; dwStyle=WS_POPUP; ShowCursor(FALSE); } else { dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; dwStyle=WS_OVERLAPPEDWINDOW; } if (!(hWnd=CreateWindowEx( dwExStyle, "OpenGL", title, dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, WindowRect.right-WindowRect.left, WindowRect.bottom-WindowRect.top, NULL, NULL, hInstance, NULL))) static PIXELFORMATDESCRIPTOR pfd= { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, bits, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; } ShowWindow(hWnd,SW_SHOW); SetForegroundWindow(hWnd); SetFocus(hWnd); ReSizeGLScene(width,height); return TRUE; } } LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_CLOSE: { PostQuitMessage(0); return 0; } return DefWindowProc(hWnd,message,wParam,lParam); } return FALSE; } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow) { MSG msg; bool done=FALSE; if(!CreateGLWindow("Mein Fenster...",1024,768,32)) { return 0; } while(!done) { if(PeekMessage(&msg,0,0,NULL,PM_REMOVE)) { if(msg.message==TRUE) { done=TRUE; } else { DispatchMessage(&msg); TranslateMessage(&msg); } } else { if(active) { if(keys[VK_ESCAPE]) { done=TRUE; } } } } } } KillGLWindow(); return (msg.wParam); }Edit:
Ich seh grad, es muss an irgendeiner KLammer liegen die fehlt oder so. Finde den Fehler aber nicht
-
Hallo
Ein Fehler während des Kompilierens? Da sagt doch der Compiler, wo der Fehler liegt. Bei diesen Einrückungen hätte ich auch Probleme mit Klammern.
chrische
-
Ja aber er kann mir ja nicht genau sagen wo der Fehler liegt.
Dachte nur, es wüsste jetzt einer auf Anhieb wo so ne dre**s Klammer fehlt.
Danke wie immer im Vor raus.
-
Hallo
voraus (mit einem r).
chrische
-
Ein Tipp: Rück deinen Code ein, dann sieht man auf Anhieb dass und auch meistens wo eine Klammer fehlt.
-
Entschuldige, aber ich versteh nicht was du mit Einrücken meinst

Danke im Voraus.
-
Hallo
Er meinte die Benutzung der Tab-Taste.
chrische
-
Ja, aber das bringt doch wahrscheinlich nichts.
Aber ich probier mal weiter....
-
Hallo
Es hilft die Blöcke zu erkennen und somit fehlende Klammern zu finden.
chrische
-
Naja, ich denke mal ich bin schon etwas weiter. Ich bin jetzt soweit das er mir nur nicht die Klammer nach dem BOOL CreateGLwindow(....) compilet, nämlich :
{.
Allerdings kann ich es mir nicht erklären weil ich die Klammer hinterher wieder schliesse.BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag) { GLuint PixelFormat; // Holds The Results After Searching For A Match WNDCLASS wc; // Windows Class Structure DWORD dwExStyle; // Window Extended Style DWORD dwStyle; // Window Style RECT WindowRect; // Grabs Rectangle Upper Left / Lower Right Values WindowRect.left=(long)0; // Set Left Value To 0 WindowRect.right=(long)width; // Set Right Value To Requested Width WindowRect.top=(long)0; // Set Top Value To 0 WindowRect.bottom=(long)height; // Set Bottom Value To Requested Height fullscreen=fullscreenflag; // Set The Global Fullscreen Flag hInstance = GetModuleHandle(NULL); // Grab An Instance For Our Window wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // Redraw On Size, And Own DC For Window. wc.lpfnWndProc = (WNDPROC) WndProc; // WndProc Handles Messages wc.cbClsExtra = 0; // No Extra Window Data wc.cbWndExtra = 0; // No Extra Window Data wc.hInstance = hInstance; // Set The Instance wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Load The Default Icon wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Load The Arrow Pointer wc.hbrBackground = NULL; // No Background Required For GL wc.lpszMenuName = NULL; // We Don't Want A Menu wc.lpszClassName = "OpenGL"; // Set The Class Name if (!RegisterClass(&wc)) // Attempt To Register The Window Class { MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION); return FALSE; // Return FALSE } if(fullscreen) { DEVMODE dmScreenSettings; dmScreenSettings.dmPelsWidth=width; dmScreenSettings.dmPelsHeight=height; dmScreenSettings.dmBitsPerPel=bits; dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT; } if(fullscreen) { dwExStyle=WS_EX_APPWINDOW; dwStyle=WS_POPUP; ShowCursor(TRUE); } else { dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; dwStyle=WS_OVERLAPPEDWINDOW; } if(!(hWnd=CreateWindowEx( dwExStyle, "OpenGL", title, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dwStyle, 0,0, WindowRect.right-WindowRect.left, WindowRect.bottom-WindowRect.top, NULL, NULL, hInstance, NULL))) static PIXELFORMATDESCRIPTOR pfd= { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_TYPE_RGBA, 0,0,0,0,0,0, 0, 0, 0, 0,0,0,0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; ShowWindow(hWnd,SW_SHOW); SetForegroundWindow(hWnd); SetFocus(hWnd); ReSizeGLScene(width,height); return TRUE; } LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_CLOSE: { PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd,message,wParam,lParam); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { MSG msg; bool done=FALSE; if (MessageBox(NULL,"Would You Like To Run In Fullscreen Mode?", "Start FullScreen?",MB_YESNO|MB_ICONQUESTION)==IDNO) { fullscreen=FALSE; } if(!CreateGLWindow("Steve's Fenster",1024,768,32)) { return 0; } while(!done) { if(PeekMessage(&msg,0,0,NULL,PM_REMOVE)) { if(msg.message=WM_QUIT) { done=TRUE; } else { DispatchMessage(&msg); TranslateMessage(&msg); } } } if(active) { if(keys[VK_ESCAPE]) { done=TRUE; } else { DrawGLscene(); SwapBuffer(hDC); } } KillGLWindow(); return (msg.wParam); }
-
Wie wärs wenn du die Fehlermeldung hier postest?
-
Naja, ich denke mal ich bin schon etwas weiter. Ich bin jetzt soweit das er mir nur nicht die Klammer nach dem BOOL CreateGLwindow(....) compilet, nämlich :
{.
Allerdings kann ich es mir nicht erklären weil ich die Klammer hinterher wieder schliesse.BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag) { GLuint PixelFormat; // Holds The Results After Searching For A Match WNDCLASS wc; // Windows Class Structure DWORD dwExStyle; // Window Extended Style DWORD dwStyle; // Window Style RECT WindowRect; // Grabs Rectangle Upper Left / Lower Right Values WindowRect.left=(long)0; // Set Left Value To 0 WindowRect.right=(long)width; // Set Right Value To Requested Width WindowRect.top=(long)0; // Set Top Value To 0 WindowRect.bottom=(long)height; // Set Bottom Value To Requested Height fullscreen=fullscreenflag; // Set The Global Fullscreen Flag hInstance = GetModuleHandle(NULL); // Grab An Instance For Our Window wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // Redraw On Size, And Own DC For Window. wc.lpfnWndProc = (WNDPROC) WndProc; // WndProc Handles Messages wc.cbClsExtra = 0; // No Extra Window Data wc.cbWndExtra = 0; // No Extra Window Data wc.hInstance = hInstance; // Set The Instance wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Load The Default Icon wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Load The Arrow Pointer wc.hbrBackground = NULL; // No Background Required For GL wc.lpszMenuName = NULL; // We Don't Want A Menu wc.lpszClassName = "OpenGL"; // Set The Class Name if (!RegisterClass(&wc)) // Attempt To Register The Window Class { MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION); return FALSE; // Return FALSE } if(fullscreen) { DEVMODE dmScreenSettings; dmScreenSettings.dmPelsWidth=width; dmScreenSettings.dmPelsHeight=height; dmScreenSettings.dmBitsPerPel=bits; dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT; } if(fullscreen) { dwExStyle=WS_EX_APPWINDOW; dwStyle=WS_POPUP; ShowCursor(TRUE); } else { dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; dwStyle=WS_OVERLAPPEDWINDOW; } if(!(hWnd=CreateWindowEx( dwExStyle, "OpenGL", title, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dwStyle, 0,0, WindowRect.right-WindowRect.left, WindowRect.bottom-WindowRect.top, NULL, NULL, hInstance, NULL))) static PIXELFORMATDESCRIPTOR pfd= { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_TYPE_RGBA, 0,0,0,0,0,0, 0, 0, 0, 0,0,0,0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; ShowWindow(hWnd,SW_SHOW); SetForegroundWindow(hWnd); SetFocus(hWnd); ReSizeGLScene(width,height); return TRUE; } LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_CLOSE: { PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd,message,wParam,lParam); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { MSG msg; bool done=FALSE; if (MessageBox(NULL,"Would You Like To Run In Fullscreen Mode?", "Start FullScreen?",MB_YESNO|MB_ICONQUESTION)==IDNO) { fullscreen=FALSE; } if(!CreateGLWindow("Steve's Fenster",1024,768,32)) { return 0; } while(!done) { if(PeekMessage(&msg,0,0,NULL,PM_REMOVE)) { if(msg.message=WM_QUIT) { done=TRUE; } else { DispatchMessage(&msg); TranslateMessage(&msg); } } } if(active) { if(keys[VK_ESCAPE]) { done=TRUE; } else { DrawGLscene(); SwapBuffer(hDC); } } KillGLWindow(); return (msg.wParam); }
-
weiss denn wirklich keiner die Lösung/Antwort ?
-
du bist lustig.
-
Hallo
Warum schreibst du uns nicht, was der Compiler meldet?
chrische
-
Compiler Fehlermeldung :
In functionBOOL CreateGLWindow(char*, int, int, int, bool)': a function-definition is not allowed here before '{' token 168 D:\\Dokumente und expected,' or `;' before '{' token
-
Ich wiess jetzt wenigstens shcon einmal, das es von diesem Code stück abhängt :
BOOL CreateGLWindow(char* title,int width,int height,int bits,bool fullscreenflag) {Der Compiler sagt mir dann immer das er die Klammer nicht compilen kann, weil
danach eine Variablen deklaration folgt.
Danke im Voraus.
-
Bei CreateGLWindow ist keine Funktionsdefinition erlaubt vor einenm {, stattdessen wird ein ; oder , erwartet. f'`8k
AutocogitoGruß, TGGC (making great games since 1992)