1

画面をフルサイズと通常サイズに、さらに重要なことに、画面サイズを通常サイズに変更すると、フルサイズにする前の位置に戻る関数を作成しようとしています。どうすればよいですか。 。

これが私がしたことです

//global Variables
int scr_pos_x = 100, scr_pos_y = 150;

//somewhere else in main method
glutInitWindowPosition(scr_pos_x, scr_pos_y);
....
glutKeyboardFunc(myKeyboard);

//myKeyBoardFunction
void myKeyboard(unsigned char key, int x, int y){
    if(key == 'f'){
        int scr_pos_x = glutGet((GLenum)GLUT_WINDOW_X);
        int scr_pos_y = glutGet((GLenum)GLUT_WINDOW_Y);
        cout << " while f press "<<scr_pos_x <<" "<<scr_pos_y << endl; // to check
        glutFullScreen();
    }else if(key=='x'){
        cout << " while x press "<<scr_pos_x <<" "<<scr_pos_y << endl; // to check
        glutPositionWindow(scr_pos_x, scr_pos_y);
        glutReshapeWindow(640, 480); 
    }
}

「f」を押すと、scr_pos_xとscr_pos_yが適切な値に設定されていることがわかりますが、「x」を押すと、これらの値はどういうわけか100と150に変わります。

4

1 に答える 1

3
if(key == 'f'){
    int scr_pos_x = glutGet((GLenum)GLUT_WINDOW_X);
    int scr_pos_y = glutGet((GLenum)GLUT_WINDOW_Y);
    cout << " while f press "<<scr_pos_x <<" "<<scr_pos_y << endl; // to check
    glutFullScreen();
}

ここでは、という2つのまったく新しい変数を作成scr_pos_xし、その変数はそのブロックscr_pos_yの終わりまで続きます。ifそれらはグローバルなものをオーバーライドします。

int2つの宣言の先頭にあるを削除して、sがグローバル変数と変数をglutGet()上書きするようにします。 scr_pos_xscr_pos_y

于 2013-03-16T06:18:25.323 に答える