Мне не удалось найти функцию обратного вызова, но вы могли бы сделать это вручную с помощью glutGet
:
int glutGet(GLenum state);
Пример того, что вы можете сделать:
bool window_change(void)
{
int init_x = glutGet(GLUT_INIT_WINDOW_X);
int init_y = glutGet(GLUT_INIT_WINDOW_Y);
int pos_x = glutGet(GLUT_WINDOW_X);
int pos_y = glutGet(GLUT_WINDOW_Y);
return (init_x != pos_x || init_y != pos_y);
}
Это вернет true, если оно будет перемещено с начальной точки. Если вы хотите проверить, перемещен ли он после последней проверки, попробуйте:
bool window_change(void)
{
static int init_x = glutGet(GLUT_INIT_WINDOW_X);
static int init_y = glutGet(GLUT_INIT_WINDOW_Y);
int pos_x = glutGet(GLUT_WINDOW_X);
int pos_y = glutGet(GLUT_WINDOW_Y);
bool result = init_x != pos_x || init_y != pos_y;
init_x = pos_x;
init_y = pos_y;
return result;
}
Вы можете установить положение окна с помощью функции: glutPositionWindow
void glutPositionWindow(int x, int y);