Изменение размера окна - PullRequest
       19

Изменение размера окна

2 голосов
/ 10 декабря 2010

Может кто-нибудь сказать, есть ли какая-нибудь функция для изменения размера окна?Также кто-нибудь есть идеи о том, как добавить полосы прокрутки в окно перенасыщения?Спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 21 февраля 2011

вы пробовали glutReshapeWindow?

void glutReshapeWindow(int width, int height);

glutReshapeWindow запрашивает изменение размера текущего окна. Параметры width и height представляют собой размеры в пикселях. Ширина и высота должны быть положительными значениями.

2 голосов
/ 22 февраля 2011

Вы не указали версию, которую используете, но 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() также выполняется обратным вызовом, так что это все равно будет ответом.

...