Что такое HANDLE в программировании под windows?

Рейтинг: 5Ответов: 3Опубликовано: 16.11.2014

Что такое HANDLE? Я начал путать его с контекстом устройства. Но что-то мне подсказывает, что это разные вещи.

Ответы

▲ 18Принят

HANDLE - дескриптор, т.е. число, с помощью которого можно идентифицировать ресурс. С помощью дескприторов можно ссылаться на окна, объекты ядра, графические объекты и т.п.

Можно провести аналогию с массивом: у нас имеется набор ресурсов, а HANDLE - это индекс, который указывает на конкретный ресурс. Это все, конечно, абстрактно, но думаю идея понятна.

▲ 6

Вы не работаете с контекстом устройства напрямую. Сам по себе контекст устройства - "черный ящик", что у него внутри, мы не знаем. У контекста устройства есть хэндл (идентификатор), который, например, возвращают функции CreateDC и GetDC и который можно передать в другие WinAPI функции.

Получается, контекст устройства (DC) - некий сложный объект, а хэндл контекста устройства (hDC) - число. Хэндл контекста устройства - это один из видов (частный случай) хэндлов. Кроме хэндлов DC, есть хэндлы окон, файлов, битмэпов, всяких кистей/карандашей и т.д.

▲ 3

Любой контекст может быть обозначен хендлом, но не всякий хендл ссылается на контекст устройства.

Хендл - это просто указатель. Контекст - это уже часть памяти, где хранятся различные настройки, параметры и данные связанного "устройства".