-2

Я знаю, что дисплей с использованием стандартов, таких как VGA, можно рассматривать как матрицу пикселей, по крайней мере, для операционной системы. Но современные дисплеи включают сложные элементы управления пользовательским интерфейсом, такие как кнопки и текстовые поля.
Я не знаю, выполняет ли ОС всю работу или это что-то, обеспечиваемое мышью из коробки.

Вопрос теперь в том, как ОС отслеживает положения этих элементов управления, чтобы управлять ими программно.

2 ответа2

2

Координаты кнопок, размеры кнопок и координаты указателя мыши сохраняются в памяти. Когда пользователь нажимает кнопку мыши, ОС сравнивает положение указателя мыши с позициями элементов управления пользовательского интерфейса и определяет соответствующее действие.

Стандарты отображения и рисования не связаны, это чисто математическая операция.

1

У вас есть экранные координаты и "Windows" (прямоугольники), так что вы всегда можете узнать, какому объекту "принадлежит" пиксель, на котором находится ваш указатель, просто рекурсивно итерируйте по структурам для проверки.

+---------------------+
+      +------+       +
+      +  X   + +--+  +
+      +------+ +  +  +
+               +--+  +
+---------------------+

Окна могут быть иерархическими и каскадными. Например, элементы GUI - это не что иное, как подокна в этом контексте. ОС будет запускаться из корня (в котором есть список всех окон "корневого уровня") и, следовательно, сможет сопоставлять положение мыши со всеми прямоугольниками. Затем он проверяет, находится ли прямоугольник на переднем плане / имеет фокус и т.д. Затем он повторяет те же проверки с "Windows" (элементами GUI) внутри этого окна. В конце концов он просто вызывает функцию обработчика событий, связанную с элементом GUI самого низкого уровня.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .