2010-02-02 2 views
8

Ho una finestra openGL che è 640x480 che ho bisogno di centrare nel mezzo dello schermo. Ho usato in precedenza:Centra una finestra OpenGL con GLUT

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

che LAVORATO.

Ma ora tutto ad un tratto, quando 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 

Qualcuno prega di aiuto. Questo è molto fastidioso e frustrante per me dato che non conosco molto su OpenGL e GLUT.

risposta

19

Inoltre, invece di collegare user32.lib lo si può fare solo con sovrabbondanza:

glutGet(GLUT_SCREEN_WIDTH) // returns Screen width 

e

glutGet(GLUT_SCREEN_HEIGHT) // returns Screen height 

Perché dipendono da Windows quando si può essere cross-platform?

Quindi, il codice sarà:

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

Grazie! Avevo provato a usarlo prima e in qualche modo avevo fallito miseramente, ma sta funzionando di nuovo con questo codice grazie a te. –

1

È necessario assicurarsi che si stia collegando a User32.lib, la libreria statica in cui è definito GetSystemMetrics(). Apri le impostazioni del tuo progetto e assicurati che l'User32.lib sia elencato tra tutti i .libs con i quali stai collegando.

+0

Dove si trova impostazioni di progetto in Visual C++? Non ho combinato niente tranne il codice reale, quindi se questo ha funzionato prima come mai smetterebbe di funzionare all'improvviso? –

+0

Se si conosce un modo alternativo di centrare una finestra OpenGL, apprezzerei anche questo. Qualunque cosa funzioni andrà bene, solo che questo ha funzionato e l'errore del compilatore è al di là delle mie conoscenze. –

+0

Ok, ho trovato come arrivare alle proprietà del progetto e al linker, ma dove si trova User32.lib? –