Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.66/111: Рейтинг темы: голосов - 111, средняя оценка - 4.66
1 / 1 / 0
Регистрация: 09.01.2011
Сообщений: 37
1

Расшифровка типа HWND

11.01.2011, 22:32. Показов 20021. Ответов 7
Метки нет (Все метки)

В Visual studio 2008 HWND раскрывается в

#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name

Помогите понять что это такое )
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2011, 22:32
Ответы с готовыми решениями:

Для чего служит первый параметр (HWND hWnd) в функции WndProc?
// функция обработки сообщений LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM...

Окно на WinAPI, параметр функции WndProc (HWND hWnd,.)
Пытаюсь понять какое значение хранит первый параметр HWND hWnd в функции WndProc. В Windows в...

Почему переменная HWND hwnd объявлена дважды?
Один раз в функции WinMain: int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,...

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно "А". Это окно создаёт новое недочернее окно "Б". Необходимо...

7
6 / 6 / 2
Регистрация: 16.08.2011
Сообщений: 77
05.01.2013, 12:55 2
Вообще могу подсказать HWND - это handle-обработка DDE - Dynamic Data Exchange Management Library (библиотека управления динамическим обменом данных) она содержится в директиве Ddeml.h из этого следует - typedef HANDLE HSZ.
Можно короче и понятнее
HWND -это дескриптор окна. Даный тип объявлен в Windef.h как показано ниже:

typedef HANDLE HWND

Если интересно узнать больше о DDE что будет полезно для лучшего понимания можно почитать данную инфу по ссылке ниже:

http://citforum.ru/programming/32less/les21.shtml
1
Эксперт С++
1664 / 1036 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
05.01.2013, 13:05 3
HANDLE - это "вещь в себе", идентификатор. Их получают от системы и единственный способ их использования для программы - хранить и предъявлять системе когда потребуется. В WinAPI такие идентификаторы реализованы в виде указателей неизвестно на что. Чтобы указатели на разные вещи не имели один и тот же тип (вроде void *) и не слишком запутывались между собой, в приведённом макросе для каждого отдельного типа хэндлов создаётся своя структура, указателем на которую и является хэндл. Поскольку эти структуры всё равно ни для чего не используются кроме как чтобы были, они содержат единственный член с говорящим именем unused ("неиспользуемый").
0
6 / 6 / 2
Регистрация: 16.08.2011
Сообщений: 77
05.01.2013, 13:15 4
Цитата Сообщение от Джек Посмотреть сообщение
Вообще могу подсказать HWND - это handle-обработка DDE - Dynamic Data Exchange Management Library (библиотека управления динамическим обменом данных) она содержится в директиве Ddeml.h из этого следует - typedef HANDLE HSZ.

Если интересно узнать больше о DDE что будет полезно для лучшего понимания можно почитать данную инфу по ссылке ниже:

http://citforum.ru/programming/32less/les21.shtml
СОРИ не то.

Вот короткий вариант того что нужно

HWND -это дескриптор окна. Даный тип объявлен в Windef.h как показано ниже:

typedef HANDLE HWND
0
697 / 296 / 57
Регистрация: 20.11.2012
Сообщений: 643
05.01.2013, 13:57 5
Цитата Сообщение от Nick Alte Посмотреть сообщение
В WinAPI такие идентификаторы реализованы в виде указателей неизвестно на что. Чтобы указатели на разные вещи не имели один и тот же тип (вроде void *) и не слишком запутывались между собой, в приведённом макросе для каждого отдельного типа хэндлов создаётся своя структура, указателем на которую и является хэндл.
Дескрипторы в Windows являются не указателями в прямом смысле (не void*), а индексами или смещениями (хотя это недокументировано) в одной из таблиц. Например хэндлы GDI-объектов представляют собою (тип_объекта | индекс_в_таблице_GDI_объектов). А HANDLE объектов ядра - смещение в таблице дескрипторов, принадлежащей процессу. С окнами аналогично (своя отдельная таблица).
0
volvo
05.01.2013, 14:08
  #6

Не по теме:

Самое главное - ответ получен ЧРЕЗВЫЧАЙНО вовремя. Что такое 2 года? Один миг...

1
480 / 472 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.01.2013, 15:14 7
Цитата Сообщение от UI Посмотреть сообщение
Самое главное - ответ получен ЧРЕЗВЫЧАЙНО вовремя. Что такое 2 года? Один миг...
0
6 / 6 / 2
Регистрация: 16.08.2011
Сообщений: 77
05.01.2013, 16:09 8
Цитата Сообщение от UI Посмотреть сообщение
Не по теме:
Самое главное - ответ получен ЧРЕЗВЫЧАЙНО вовремя. Что такое 2 года? Один миг...
Шутку оценил
Может кто и ищет ответ, вот и будет некое представление что такое HWND.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2013, 16:09

HWND hwnd- получение...
Кто - нибудь знеет функцию получения указателя на окно HWND?

Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать...

HWND
Как взять дескриптор окна через его имя?

HWND
Доброго времени суток, извините за такой тупой вопрос, но.... объявляю функцию void draw(HWND...

IN HWND hWnd
Здравствуйте. Каково назначение IN в объявлении IN HWND hWnd? В чём разница между HWND hWnd и IN...

DECLARE_HANDLE (HWND);
Почему так странно объявлен тип HWND? Может кто прокомментировать эти строки: //winnt.h #define...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.