|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.04.2015, 22:09 | #1 |
Пользователь
Регистрация: 16.02.2013
Сообщений: 18
|
Данные в CommonControls
Как хранятся данные в CommonControls (например ListView или ListBox)?
При создании своих контролов, регистрирую класс окна с WND_CLASS::cbWndExtra = sizeof(MyData*). Потом всё по порядку: при создании окна SetWindowLongPtr(hWnd, 0, PtrToLong(new MyData), затем в процедуре окна MyData* ptr = GetWindowLongPtr(hWnd, 0). Таким образом для каждого окна своя MyData. Если я напишу SetWindowLongPtr(hWnd, 0, <что нибудь другое>) - окно потеряет связь с структурой MyData. Я применял SetWindowLongPtr(hWnd, 0, 0) и SetWindowLongPtr(hWnd, GWL_USERDATA, 0) к ListBox, но данные окна не повредились. Так вот, как такие данные хранятся в стандартных окнах? |
03.04.2015, 09:07 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
GWL_USERDATA к cbWndExtra отношения не имеет - это будет работать даже если cbWndExtra равно 0.
Доступ к памяти, выделенной через cbWndExtra осуществляется положительными индексами: GetWindowLong(hWnd, 0); GetWindowLong(hWnd, 4); GetWindowLong(hWnd, XXX); Естественно, не следует выходить за пределы выделенной памяти. По сути, это не решает вашу проблему - кто угодно может записать туда любые данные. Более секретным будет например SetProp(). Ну, и в конце концов, никто не мешает воспользоваться например std::map<> или написать аналогичный механизм. http://www.codeproject.com/Articles/...-with-a-Window http://en.wikipedia.org/wiki/Associative_containers |
03.04.2015, 17:59 | #3 |
Пользователь
Регистрация: 16.02.2013
Сообщений: 18
|
Благодарю за информацию, про SetProp() - не знал.
А что используют Common Controls (comctl32.dll) ? |
03.04.2015, 20:22 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Никто не знает
Еще есть например SetWindowSubclass() |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
задача: есть БД с 2 файлами в которые записываются данные о квартирах, выбрать нужные данные | lexa_7up | Помощь студентам | 4 | 11.01.2014 19:37 |
Как упорядочить данные (перевести данные из стольбцов в строки)? | opeck | Microsoft Office Excel | 3 | 21.11.2011 01:43 |
Данные по столбцам - упорядочить данные к друг другу | PetroD | Microsoft Office Excel | 10 | 07.08.2010 12:30 |
Сверить Данные | valerij | Microsoft Office Excel | 19 | 12.01.2010 18:43 |
данные бд | elfers | БД в Delphi | 5 | 02.04.2009 12:38 |