2010-02-02 4 views
8

У меня есть окно openGL, которое составляет 640x480, которое мне нужно центрировать в середине экрана. I ранее использовалось:Центр окна OpenGL с GLUT

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

который РАБОТАЕТ.

Но теперь вдруг, когда я компилирую ...

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 

Кто-то пожалуйста, помогите. Это очень раздражает и расстраивает меня, поскольку я не очень много знаю о OpenGL и GLUT.

ответ

19

Кроме того, вместо ссылки user32.lib вы можете сделать это только с помощью перенасыщение:

glutGet(GLUT_SCREEN_WIDTH) // returns Screen width 

и

glutGet(GLUT_SCREEN_HEIGHT) // returns Screen height 

Почему зависит от Windows, когда вы можете быть кросс-платформенный?

Таким образом, ваш код будет выглядеть:

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

Спасибо! Я попытался использовать это раньше и как-то потерпел неудачу, но благодаря этому он снова работает с этим кодом. –

1

Вам необходимо убедиться, что вы привязаны к User32.lib, статической библиотеке, где определен GetSystemMetrics(). Откройте настройки своего проекта и убедитесь, что User32.lib указан среди всех .lib, с которыми вы связываетесь.

+0

Где находится параметры проекта в Visual C++? Я не возился ни с чем, кроме фактического кода, поэтому, если бы это сработало до того, как все это внезапно прекратилось? –

+0

Если вы знаете альтернативный способ центрирования окна OpenGL, я был бы признателен за это. Какая бы работа ни была хороша, просто это и сработало, и ошибка компилятора мне не поддается. –

+0

Хорошо, я нашел, как добраться до свойств проекта и компоновщика, но где находится User32.lib? –

Смежные вопросы