Изменение размера окна
Может кто-нибудь сказать мне, есть ли какая-либо функция для изменения размера окна Glui? Также у кого-нибудь есть идеи о том, как добавить полосы прокрутки в окно перенасыщения? Спасибо заранее.
2 ответа
Ты пробовал glutReshapeWindow?
void glutReshapeWindow(int width, int height);
glutReshapeWindow запрашивает изменение размера текущего окна. Параметры width и height представляют собой размеры в пикселях. Ширина и высота должны быть положительными значениями.
Вы не указали версию, которую используете, но v2.2 поставляется с некоторыми примерами. Если вы проверите example5.cpp и example3.cpp, вы заметите, что окно GLUI создается поверх окна GLUT (см. Код ниже):
int main_window = glutCreateWindow( "GLUI Example" ); // Creating GLUT window
// Setting up callbacks
glutDisplayFunc( myGlutDisplay );
GLUI_Master.set_glutReshapeFunc( myGlutReshape ); // Humm, this could be it!
GLUI_Master.set_glutKeyboardFunc( myGlutKeyboard );
GLUI_Master.set_glutSpecialFunc( NULL );
GLUI_Master.set_glutMouseFunc( myGlutMouse );
// Blah Blah to create objects and make it fancy
GLUI* glui = GLUI_Master.create_glui( "GLUI", 0, 400, 500 ); // Create GLUI window
glui->set_main_gfx_window( main_window ); // Associate it with GLUT
Так что, похоже, у вас есть 2 варианта: первый, выполнить обратный вызов myGlutReshape()
непосредственно, чтобы видеть, изменяет ли это размер окна (указанный ниже):
void myGlutReshape( int x, int y )
{
int tx, ty, tw, th;
GLUI_Master.get_viewport_area( &tx, &ty, &tw, &th );
glViewport( tx, ty, tw, th );
xy_aspect = (float)tw / (float)th;
glutPostRedisplay();
}
или (второй), который звонит glutReshapeWindow()
изменить размеры окна (вероятно, следуют glutPostRedisplay ()).
glutReshapeWindow( 800, 600);
glutPostRedisplay(); // This call may or may not be necessary
Заметить, что glutReshapeWindow()
также выполняется обратным вызовом, так что это все равно будет ответом.