|
|
|
| Что такое дескрипторы, объясните пожалуйста! Буду очень признателен, если объясните просто и понятно! | |
|
|
|
|
|
|
|
для: alex19921992
(26.02.2007 в 15:47)
| | Дескриптор (handle) - это идентификатор объекта, который создается не вашей программой а
операционной системой или сторонней библиотекой. Внутреннее устройство объекта скрыто, но
вы можете создать, удалить объект, выполнить с ним некие действия.
Обычно дескрипторы реализуются в виде целых чисел или указателей.
HWND hadle = CreateWindow (...); // создание окна
MoveWindow (hadle, ...); // перемещение окна
CloseWindow (hadle); // закрытие окна
|
| |
|
|
|
|
|
|
|
для: oleg_alexeev
(26.02.2007 в 16:44)
| | Хорошо, что такое идентификатор объекта и что за объекты вообще могут быть? | |
|
|
|
|
|
|
|
для: alex19921992
(26.02.2007 в 18:26)
| | Вопрос, как говорится, на засыпку ... =))
Объект - базовое понятие объектно-ориентированного программирования.
И, как все базовые понятия, не имеет точного определения. Можно давать только разные описания,
помогающие интуитивно почувствовать что это.
В конкретном же случае языков C/C++ объектом является экземпляр структуры/класса,
находящийся где-то в памяти (с этим определением вполне можно поспорить, уточнить,
расширить и т.п.).
пример:
struct Window
{
int x, y; // положение
int w, h; // размеры
... // прочая лабуда
};
void * CreateWindow()
{
Window *p = new Window;
p->x = 0;
p->y = 0;
...
return p;
}
void CloseWindow(void *p)
{
delete ((Window *)p);
}
|
Здесь структура Window - это описание структуры объекта (извиняюсь за тавтологию).
В функции CreateWindow в памяти создается экземпляр этой структуры и инициализируются
её поля, т.е. создается объект. Из функции возвращается указатель на объект. Этот указатель
может называться идентификатором объекта, поскольку он определяет (идентифицирует)
этот (и только этот) объект.
В функцию CloseWindow передается идентификатор объекта. Там он преобразуется в
указатель на объект и затем объект уничтожается.
Можно заметить, что вызывающему коду совершенно не нужно знать объявление структуры Window.
Ради этого и были придуманы дескрипторы - для сокрытия информации о внутреннем устройстве.
Так, разработчики операционной системы могут модернизировать свои окошки, не влияя на
существующий код приложений. | |
|
|
|
|
|
|
|
для: alex19921992
(26.02.2007 в 15:47)
| | Изначально, это был номер. Открываете вы несколько файлов одновременно, и чтобы не путать их - каждому открытому файлу присваивается уникальный номер (дескриптор), по которому вы всегда однозначно можете обратиться к тому или иному файлу. Потом вместо чисел стали использоваться объекты.
В Windows очень много ресурсов - окна, кисти, палитры, файлы, изображения и т.п. поэтому требуется очень много дескрипторов, чтобы управлять этим хозяйством и не путаться в них. | |
|
|
|