Windows Class, OpenGL not compiling

Started by
0 comments, last by HemoGloben 20 years ago
If you look at one of my other posts, you can see that I was trying to write a windows wrapper class. Well, I used my copy of OpenGL Game Programming, to throw together a windows class, and When I try to compile my test application, it doesn''t work. I get these errors: Main.cpp c:\program files\microsoft visual studio\vc98\include\gl\gl.h(1152) : error C2144: syntax error : missing '';'' before type ''void'' c:\program files\microsoft visual studio\vc98\include\gl\gl.h(1152) : error C2501: ''WINGDIAPI'' : missing storage-class or type specifiers c:\program files\microsoft visual studio\vc98\include\gl\gl.h(1152) : fatal error C1004: unexpected end of file found Error executing cl.exe. Here''s the code:
#include <iostream>
#define WIN32_LEAN_AND_MEAN
#include <gl/glu.h>
#include <gl/gl.h>
#include <windows.h>


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	MSG msg;
	Window currentWind (400,400,10,10,hInstance,"Ben''s Test Application");
	currentWind.Create();

	bool done=false;

	while(!done)
	{
		PeekMessage(&msg, currentWind.getHWND(), NULL, NULL, PM_REMOVE);

		if(msg.message == WM_QUIT)
		{
			done=true;
		}
		else
		{
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			glLoadIdentity();

			glColor3f(1.0f,0.0f,0.0f);
			glBegin(GL_TRIANGLES);
				glVertex3f(0.0f,0.0f,0.0f);
				glVertex3f(1.0f,0,0f,0.0f);
				glVertex3f(1.0f,1.0f,0.0f);
			glEnd();

			SwapBuffers(currentWind.getHDC());

			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return msh.wParam;
}
WindClass.h:

class Window
{
public:
	Window(int width1, int height1, int x, int y,HINSTANCE instance, char[] name)
	{
		width = width1;
		height = height1;
		xPos = x;
		yPos = y;
		AppName[] = name;
		hInstance = instance;
		Create();
	}
	
	HWND getHWND()
	{
		return hwnd;
	}

	HGLRC getHRC()
	{
		return hRC;
	}

	HDC getHDC()
	{
		return hDC;
	}


private:
	int width;
	int height;
	int xPos;
	int yPos;
	char AppName[];
	HGLRC hRC;
	HWND hwnd;
	HDC hDC;
	HINSTANCE hInstance;
	WNDCLASSEX windowClass;



	LRESULT CALLBACK WndProc(UINT message, WPARAM wParam, LPARAM lParam)
	{

		switch(message)
		{
		case WM_CREATE:
			hDC = GetDC(hwnd);
			SetupPixelFormat(hDC);

			hRC = wglCreateContext(hDC);
			wglMakeCurrent(hDC, hRC);

			return 0;
			break;
		case WM_CLOSE:
			wglMakeCurrent(hDC, NULL);
			wglDeleteContext(hRC);

			PostQuitMessage(0);
			return 0;
			break;
		case WM_SIZE:
			height = HIWORD(lParam);
			width = LOWORD(lParam);

			if(height ==0)
			{
				height=1;
			}

			glViewport(0,0,width, height);
			glMatrixMode(GL_PROJECTION);
			glLoadIdentity();

			gluPerspective(45.0f, (GLfloat)width/(GLfloat)height,1.0f,1000.0f);

			glMatrixMode(GL_MODELVIEW);
			glLoadIdentity();
			return 0;
			break;
		default:
			break;
		}
		return (DefWindowProc(hwnd, message,wParam,lParam));
	}



	int Create()
	{
		windowClass.cbSize			=sizeof(WNDCLASSEX);					
		windowClass.style			=CS_HREDRAW | CS_VREDRAW;
		windowClass.lpfnWndProc		=WndProc;
		windowClass.cbClsExtra		=0;
		windowClass.cbWndExtra		=0;
		windowClass.hInstance		=hInstance;
		windowClass.hIcon			=LoadIcon(NULL,IDI_APPLICATION);		//Default Icon

		windowClass.hCursor			=LoadCursor(NULL, IDC_APPLICATION);		//Default Arrow

		windowClass.hbrBackground	=NULL;									//Don''t need backround

		windowClass.lpszMenuName	=NULL;									//No Menu

		windowClass.lpszClassName	= "My Class";
		windowClass.hIconSm			=LoadIcon(NULL, IDI_WINLOGO);			//Small Icon


		if (!RegisterClassEx(&windowClass))
			return 0;

		hwnd = CreateWindowEx(NULL,
							  "My Class",
							  AppName,
							  WS_OVERLAPPEDWINDOW | WS_VISIBLE |
							  WS_SYSMENU | WS_CLIPCHILDREN |
							  WS_CLIPSIBLINGS,
							  xPos, yPos,
							  width, height,
							  NULL,
							  NULL,
							  hInstance,
							  NULL);

		if(hwnd)
			return 0;
		
		ShowWindow(hwnd,SW_SHOW);
		return 1;
	}

	void SetupPixelFormat()
	{
		int nPixelFormat;

		static PIXELFORMATDESCRIPTOR pfd = {
			sizeof(PIXELFORMATDESCRIPTOR),
				1,								//Version(always 1)

				PFD_DRAW_TO_WINDOW |			//Support Window

				PFD_SUPPORT_OPENGL |			//Support OpenGL

				PFD_DOUBLE_BUFFER |				//Support Double Buffering

				PFD_TYPE_RGBA,					//RGBA color mode

				32,								//32 bit Color mode

				0,0,0,0,0,0,					//Ignore color bits, not used

				0,								//no alpha Buffer

				0,								//ignore shift bit

				0,								//no accumulation buffer

				0,0,0,0,						//Ignore z accumulation bits

				16,								//16 bit z-Buffer size

				0,								//no stencil Buffer

				0,								//no Auxiliary Buffer

				PFD_MAIN_PLANE,					//Main drawing Plane

				0,								//reserved

				0,0,0};							//layerMasks ignored


			nPixelFormat = ChoosePixelFormat(hDC, &pfd);

			SetPixelFormat(hDC, nPixelFormat, &pfd);
	}
}
PS feel free to point out horrendous code, or errors, or anything for that matter. I need criticism anyway. (I''m uber noob)
if(this.post == SATISFYING){money.send(1.00,&HemoGloben);return thanks;}
Advertisement
Try including windows.h before any of the OpenGL headers.

- CheeseMonger
- CheeseMonger

This topic is closed to new replies.

Advertisement