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

> ВНИМАНИЕ!

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

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


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

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

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


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


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


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

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

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


Попробовал:
            if RegisterClassEx(MyEdit) <> 0 then
begin
Result := CreateWindowEx(WS_EX_CLIENTEDGE,
SuperClassedEdit, nil,
WS_CHILD or WS_VISIBLE or ES_LEFT,
8, 16, 220, 21,
Window, 0, System.MainInstance, nil);
GetMem(DataPtr, SizeOf(MyStruct));
with DataPtr^ do
begin
color := 12; // Это так, для теста
backcolor := 18;
end;
SetWindowLongPtr(Result, GWL_USERDATA, Integer(DataPtr));
end;
- проканало, потом в оконной функции нового контрола значения читаются правильно, даже без выделения дополнительной памяти в cbWndExtra. Один указатель через GWL_USERDATA можно засунуть всегда (привожу к Integer, ибо 32-битная система, на 64-битах может сглючить, надо проверять чему равен LONG_PTR там)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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