Центр окна OpenGL с помощью
Вопрос
У меня есть окно OpenGL, которое составляет 640x480, что мне нужно в центре в середине экрана. Я ранее использовал:
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)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>Project1.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>C:\Users\My Computer\Documents\School Stuff\CS445\Project1\Debug\Project1.exe : fatal error LNK1120: 2 unresolved externals
Кто-то, пожалуйста, помогите. Это очень раздражает и расстраивает для меня, так как я не знаю много об OpenGL и Glut.
Решение
Кроме того, вместо подключения User32.Lib Вы можете сделать это исключительно использовать GluT:
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);
Другие советы
Вы должны убедиться, что вы связываете с User32.Lib, статической библиотекой, где GetSystemMetrics()
определено. Откройте настройки вашего проекта и убедитесь, что user32.lib указан среди всех .Libs, с которыми вы связываете.