IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Память окна, WinAPI
TarasBer
сообщение 29.09.2011 9:38
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Мне понадобилось, чтобы каждое окно помнило какую-нибудь дополнительную информацию.
Вариант с хеш-таблицей по описателю, мне кажется, не совсем архитектурен, ну как бы это объяснить, типа окно в винде, а таблица и информация - в программе.
Вот например, любое окно где-то хранит свои координаты, у него есть какой-то свой личный блок памяти, и этот блок как бы на уровне винды, извиняюсь за такую терминологию. И у каждого класса блок памяти разный по размеру и структуре. Ну и мне кажется целесообразным, чтобы эта дополнительная информация хранилась в этом же блоке памяти. В общем как задавать размер этого блока при создании класса окна, как с ним работать?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 3.10.2011 13:48
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Что ж нечестного? Все как раз нормально, если ты наследуешься от того, что уже само унаследовано - будь добр в структуре, которую выделяешь в памяти и ссылку на которую оставляешь в USERDATA, предусмотреть поле Parent, которое будет хранить ссылку на данные, выделенные предком. То есть, в инициализаторе (конструкторе) потомка выделяешь память под нужный объем данных + Parent, в Parent считываешь текущее значение GWL_USERDATA, и потом пишешь новый указатель в GWL_USERDATA. Освобождать память - в обратном порядке...

Могу дать ссылку по работе с выделяемой памятью (увеличение cbWndExtra), но это делают только на Бейсике почему-то, ни на Дельфи ни на С++ я такого не встречал. А в том, как оно работает на Бейсике - честно говоря не совсем разобрался. Может у тебя получится? Вот: Take control of your window(s) [SUPERCLASS]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 15:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"