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

> ВНИМАНИЕ!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

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


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

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

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


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


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  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

 





- Текстовая версия 24.12.2025 13:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name