Vertex Normals

Ok so I have a cube

	static const GLfloat vert[] = 
	{
		0.5f,  0.5f,  0.5f,   -0.5f,  0.5f,  0.5f,   -0.5f, -0.5f,  0.5f,    0.5f, -0.5f,  0.5f,
		0.5f,  0.5f,  0.5f,    0.5f, -0.5f,  0.5f,    0.5f, -0.5f, -0.5f,    0.5f,  0.5f, -0.5f,
		0.5f,  0.5f,  0.5f,    0.5f,  0.5f, -0.5f,   -0.5f,  0.5f, -0.5f,   -0.5f,  0.5f,  0.5f,
		-0.5f, 0.5f,  0.5f,   -0.5f,  0.5f, -0.5f,   -0.5f, -0.5f, -0.5f,   -0.5f, -0.5f,  0.5f,
		-0.5f,-0.5f, -0.5f,    0.5f, -0.5f, -0.5f,    0.5f, -0.5f,  0.5f,   -0.5f, -0.5f,  0.5f,
		0.5f, -0.5f, -0.5f,   -0.5f, -0.5f, -0.5f,   -0.5f,  0.5f, -0.5f,    0.5f,  0.5f, -0.5f
	};

//Quad
and its normals

	static const GLfloat norm[] = 
	{
		0,  0,  1,    0,  0,  1,    0,  0,  1,    0,  0,  1,
		-1, 0,  0,   -1,  0,  0,    -1, 0,  0,   -1,  0,  0,
		0,  1,  0,    0,  1,  0,    0,  1,  0,    0,  1,  0,
		1,  0,  0,    1,  0,  0,    1,  0,  0,    1,  0,  0,
		0, -1,  0,    0, -1,  0,    0, -1,  0,    0, -1,  0,
		0,  0, -1,    0,  0, -1,    0,  0, -1,    0,  0, -1
	};   

But whenever I look straight down everything turns black.
I think it’s Normal problems,but I checked and they seem right.

static GLfloat material_specular[] = {1.0,1.0,1.0,1.0,};
	static GLfloat material_shininess = 5.0;
	static GLfloat light_position[] = {1.0,1000,1.0,0.0};
	static GLfloat light_ambient[] = {1.0,1.0,0.0,1.0};

This is lightning parameters,and the Lightning code

	void light()
	{
		glMaterialfv(GL_FRONT,GL_SPECULAR,material_specular);
		glMaterialfv(GL_FRONT,GL_SHININESS,&material_shininess);

		glLightfv(GL_LIGHT0,GL_POSITION,light_position);
		glLightfv(GL_LIGHT0,GL_SPECULAR,light_ambient);

		glEnable(GL_LIGHTING);
		glEnable(GL_LIGHT0);

		
	}

Uploaded with ImageShack.us

You can only issue light commands after setting up the modelview matrix.

  glLightfv(GL_LIGHT0,GL_POSITION,light_position);
  glLightfv(GL_LIGHT0,GL_SPECULAR,light_ambient);

what is value of modelview matrix?

How should I look ?
But I called the function after

glMatrixMode(GL_PROJECTION);
		GetClientRect(*hWnd,&rc);
		glViewport(rc.left,rc.top,rc.right,rc.bottom);
		gluPerspective(90,(float)( (float)(rc.right-rc.left)/(float)(rc.bottom-rc.top)), 0.001, 640.0);
		glMatrixMode(GL_MODELVIEW);

yes… but what have you set for the ModelView matrix?
Have you left it at identity? Have you defined your own camera class (inwhich case you will be changing ModelView Matrix)?

You said you were drawing a cube, but all I see is a flat grid/quad. So what’s the normal for the surface we are looking at in the picture you posted?

   void render()
    {
        glLoadIdentity();
           
        glRotatef(pos::v, 1.0f, 0.0f, 0.0f);
        glRotatef(pos::h, 0.0f, 1.0f, 0.0f);
		glTranslatef(pos::x - 1.0, pos::y, pos::z - 1.0);

I translate before I draw the cubes,and then put them between Push/Pop Matrix.
That’s the top of the cube,normals are
0,1,0 3 times
positive Y a.k.a. Up