Показать полную графическую версию : SetWindowLong, GetWindowLong и GWL_USERDATA
crashtuak
20-02-2010, 10:09
Как с помощью SetWindowLong, GetWindowLong с параметром nIndex равным GWL_USERDATA установить и получить указатели на разные типы данных(в первую очередь-на классы)?
что имеется ввиду? туда можно запихнуть один указатель длиной 4 байта. А что по его адресу находится - это глубоко личное дело программиста :) Например это может быть структура, содержащая туеву хучу других указателей (любых типов). Но если есть класс, который живёт ровно столько же, сколько HWND, то лучше запихнуть все указатели в него. Если речь идёт о неизвестном количестве разных указателей неизвестного типа, то лучше использовать GetProp/SetProp
crashtuak
22-02-2010, 10:47
GetProp/SetProp-можно поподробнее?
Каждому окну можно назначить кучу "свойств". Хранятся они по типу ассоциативной таблицы по атому, но можно и по строчке. По атому работает быстрее. Изначально предназначены для DDE. Библиотека Delphi использует их для хранения указателей на TControl, причём по медленной схеме, через текст. Перед удалением окна обязаловка удалять все свойства (сами они вроде не удаляются). Ещё подробней - в MSDN http://msdn.microsoft.com/en-us/library/ms633564%28VS.85%29.aspx
hData
[in] Handle to the data to be copied to the property list. The data handle can identify any value useful to the application.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.