2010-02-02 33 views
8

Tengo una ventana OpenGL de 640x480 que necesito para centrar en el medio de la pantalla. Utilicé previamente:Centrar una ventana OpenGL con GLUT

glutInitWindowPosition((GetSystemMetrics(SM_CXSCREEN)-640)/2, 
         (GetSystemMetrics(SM_CYSCREEN)-480)/2); 

que funcionó.

Pero ahora, de repente, cuando compilo ...

Linking... 
1>Project1.obj : error LNK2028: unresolved token (0A000372) "extern "C" int __stdcall GetSystemMetrics(int)" ([email protected]@[email protected]) referenced in function "int __cdecl main(int,char * *)" ([email protected]@[email protected]) 
1>Project1.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall GetSystemMetrics(int)" ([email protected]@[email protected]) referenced in function "int __cdecl main(int,char * *)" ([email protected]@[email protected]) 
1>C:\Users\My Computer\Documents\School Stuff\CS445\Project1\Debug\Project1.exe : fatal error LNK1120: 2 unresolved externals 

Alguien por favor ayuda. Esto es muy molesto y frustrante para mí, ya que no sé mucho sobre OpenGL y GLUT.

Respuesta

19

Además, en lugar de vincular User32.lib puede hacerlo utilizando exclusivamente exceso:

glutGet(GLUT_SCREEN_WIDTH) // returns Screen width 

y

glutGet(GLUT_SCREEN_HEIGHT) // returns Screen height 

Por qué dependen de Windows cuando puede ser multiplataforma?

Por lo tanto, el código sería:

glutInitWindowPosition((glutGet(GLUT_SCREEN_WIDTH)-640)/2, 
         (glutGet(GLUT_SCREEN_HEIGHT)-480)/2); 
+0

¡Gracias! Había intentado usar esto antes y de alguna manera había fallado miserablemente pero está trabajando nuevamente con este código gracias a ti. –

1

Debe asegurarse de estar enlazando con User32.lib, la biblioteca estática donde se define GetSystemMetrics(). Abre la configuración de tu proyecto y asegúrate de que el User32.lib aparezca en la lista de todas las .libs con las que estás enlazando.

+0

¿Dónde está la configuración del proyecto en Visual C++? No me metí con nada, excepto con el código real, así que si esto funcionaba antes, ¿cómo es que de repente dejaría de funcionar? –

+0

Si conoce una forma alternativa de centrar una ventana de OpenGL, lo agradecería también. Cualquiera que funcione estará bien, solo que esto funcionó y el error del compilador está más allá de mi conocimiento. –

+0

Bien, he encontrado cómo llegar a las propiedades del proyecto y al enlazador, pero ¿dónde se encuentra User32.lib? –