Что такое Handle? Кто может дать объяснение?
От: A L I E N Россия  
Дата: 20.03.02 08:18
Оценка:
Требуется наиболее понимабильное объяснение.
Naver talk to A L I E N S
Re: Что такое Handle? Кто может дать объяснение?
От: Alex Fedotov США  
Дата: 20.03.02 08:34
Оценка:
Здравствуйте A L I E N, Вы писали:

ALIEN> Требуется наиболее понимабильное объяснение.


Нandle — это просто число, однозначно идентифицирующее некоторый объект в системе. Когда система создает объект: мьютекс, окно и т.д., тебе возвращается его handle. Поскольку у тебя нет прямого указателя на данные объекта, то ты не можешь там ничего испортить, а вынужден работать с объектом используя специально предоставленные для этого функции.
-- Alex Fedotov
Re[2]: Что такое Handle? Кто может дать объяснение?
От: VVV Россия  
Дата: 20.03.02 14:18
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Здравствуйте A L I E N, Вы писали:


ALIEN>> Требуется наиболее понимабильное объяснение.


AF>Нandle — это просто число, однозначно идентифицирующее некоторый объект в системе. Когда система создает объект: мьютекс, окно и т.д., тебе возвращается его handle. Поскольку у тебя нет прямого указателя на данные объекта, то ты не можешь там ничего испортить, а вынужден работать с объектом используя специально предоставленные для этого функции.


К сказанному можно привести пример использования "хендлов" в своих программах:

выставляем наружу свой API:

HANDLE CreateMyObject(void);
BOOL SetMyObjectParam(HANDLE, int param_id, int value);
void CloseMyObject(HANDLE);

--реализация
HANDLE CreateMyObject(void)
{
  return (HANDLE)new CMyObject;
}

BOOL SetMyObjectParam(HANDLE h, int param_id, int value)
{
  CMyObject *p=(CMyObject*)h;
  return p->SetParam(param_id, value);
}

void CloseMyObject(HANDLE)
{
  CMyObject *p=(CMyObject*)h;
  delete p;
}


В этом случае библиотекой могут пользоваться не только программисты C++, но и других (даже не объектноориентированных) языков, например C, Basic, Pascal, Fortran,... Отчасти "хендл"+АПИ можно назвать адаптерами объектно-ориентированного мира к не объектно-ориентированному (не совсем так, но можно так думать ).
Опять же о вызовах простых функций разработчикам компиляторов договориться намного проще, чем о внутреннем представлении объектов...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.