Что такое handle в c++ и зачем его создают?
handler — (дословно) обработчик, а handle — это просто то, с чем функция работает Какой-то ID, по которому API определяет, с каким объектом мы имеем дело.
Это число, которое представляет собой идентификатор какой-то структуры
или объекта операционной системы. По сути это — адрес этой структуры
в памяти, только память эта не обязательно доступна (и как правило недоступна)
приложению, а доступна только компонентам операционки
Банальный перевод слова хандл — ручка. С помощью хандла (ручки) управляют большими механизмами или к примеру передают эту ручку соседу, чтобы он пооперировал ими.
Handle Структура
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет любую сущность метаданных (например, ссылку на тип, определение типа, спецификацию типа, определение метода или настраиваемый атрибут) или значение (строку, большой двоичный объект, GUID или пользовательскую строку).
Что такое HANDLE в программировании под windows?
Что такое HANDLE? Я начал путать его с контекстом устройства. Но что-то мне подсказывает, что это разные вещи.
![]()
HANDLE — дескриптор, т.е. число, с помощью которого можно идентифицировать ресурс. С помощью дескприторов можно ссылаться на окна, объекты ядра, графические объекты и т.п.
Можно провести аналогию с массивом: у нас имеется набор ресурсов, а HANDLE — это индекс, который указывает на конкретный ресурс. Это все, конечно, абстрактно, но думаю идея понятна.
![]()
Вы не работаете с контекстом устройства напрямую. Сам по себе контекст устройства — «черный ящик», что у него внутри, мы не знаем. У контекста устройства есть хэндл (идентификатор), который, например, возвращают функции CreateDC и GetDC и который можно передать в другие WinAPI функции.
Получается, контекст устройства (DC) — некий сложный объект, а хэндл контекста устройства (hDC) — число. Хэндл контекста устройства — это один из видов (частный случай) хэндлов. Кроме хэндлов DC, есть хэндлы окон, файлов, битмэпов, всяких кистей/карандашей и т.д.