@daniil14056

Почему в winApi c++ все обычные поля, input-ы, button-ы layout называются окнами?

Правильно ли я предполагаю что любая графическая часть в QT, JAVA SWING, HTML под винду как минимум - это все "окна". И еще вопрос как система на очень низком уровне определяет куда именно я щелкнул мышкой, там работает к примеру так же как в canvas-e, например когда я создаю свою рисовалку, и рисую там свою кнопку, и пишу функцию, которая определит был ли щелчок на этой моей кнопке или нет, это по скорости сопоставимо со стандартной кнопкой, там так же определяет позиции?
  • Вопрос задан
  • 350 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
В WinAPI пользовательское взаимодействие строиться на "окнах" (windows). Регистрируется класс окна функцией RegisterClass куда передается структура с наименованием класса окна, характеристиками окна и указатель на функцию, что будет обрабатывать все оконные сообщения (некоторые из которых отвечают и за открисовку).
Далее по наименованию класса окна можно создать нужное "окно" (визуальный элемент).
input, button и т.д. это наименования данных классов окна.
Ядро WinAPI обрабатывает прерывания от устройт ввода, преобразует в системные сообщения и пересылает их в активное окно. Для WinAPI доступны все окна и поэтому она знает какому окну слать. (Получить список всех окон верхнего уровня можно функцией EnumWindows)
Когда вы щелкаете мышкой, то WinAPI создает множество сообщений на это событие (WM_LBUTTONDOWN, WM_LBUTTONUP и т.д.)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы