Привет! Я пытаюсь написать программу, где мне нужно сообщить о положении каждого движения мыши. Я вызвал функцию XSelectInput()
с маской PointerMotionMask
. Кажется, что все работает нормально, но цифры после печати не появляются после каждого движения, они появляются в блоках, а номера в event.xmotion.x
и event.xmotion.y
очень высоки, в сто тысяч.
Что вызывает эти большие числа?
Также моя программа получает каждое число и сообщает об этом немедленно или хранится в очереди и отправляется блоками на терминал?
Благодаряуказатель движения. почему цифры настолько высоки? почему он печатает информацию в блоках, а не постоянный поток?
Вот мой цикл событий:
while(1)
{
XNextEvent(display, &event);
switch (event.type)
{
case Expose:
glClearColor(1.0, 1.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glXSwapBuffers(display, glxwin);
break;
case MotionNotify:
printf("%d, %d", event.xmotion.x, event.xmotion.y);
break;
case ButtonPress: exit(1);
default: break;
}
}
Попробуйте добавить '\ n' в ваш printf для буферизации. (Не знаю о системе координат, хотя.) – Mat
не дублируйте вопросы (вы могли бы просто отредактировать предыдущий) – prajmus
kk не знал, что – sandbucket