|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 12, 2004 19:43:57 Хочу написать библиотеку для собственного типа окна. Чтобы она была в библиотеке. Но не знаю как хранить настройки текущего окна. Скажем RichEdit-у говоришь, чтобы выравнивал текст по правому краю, и он это помнит и выравнивает. И только в этом окне такого класса. А другие окна этого же класса (и из этой же библиотеки) выравнивают так, как у них. Так вопрос, как и где хранить эти локальные настройки окна? Не в глобальных переменных библиотеки? Тогда где? |
|
|
Дата: Апр 12, 2004 22:51:01 Зарезервировать местечко в хипе (GetProcessHeap + HeapAlloc) и записать указатель на это дело в GWL_USERDATA через SetWindowLong. |
|
|
Дата: Апр 13, 2004 04:40:32 Я так и подозревал. Получается это - единственный вариант. Да? Quantum Зарезервировать местечко в хипе (GetProcessHeap + HeapAlloc) и записать указатель на это дело в GWL_USERDATA через SetWindowLong. А в чьём хипе? Точнее, в собственной куче библиотеки или в куче проги, которая её вызвала. Пожалуй второе, да? А если библиотека вызовет HeapCreate,0,0,0? И тогда это в чьей куче будет это пространство? А что лучше: GetProcessHeap или HeapCreate? |
|
|
Дата: Апр 13, 2004 04:52:14 SolidCode Точнее, в собственной куче библиотеки или в куче проги, которая её вызвала. Процесс один - куча по умолчанию одна. А если библиотека вызовет HeapCreate,0,0,0? Вместо GetProcessHeap можно вызвать HeapCreate, но зачем? Для сохранения небольших объёмов данных дефолтового хипа вполне достаточно, IMHO, и создавать новый хип нет оснований. |
|
|
Дата: Апр 13, 2004 18:05:39 А ProcessHeap будет расти бесконечно, если мне понадобятся большие объёмы памяти, напр. для хранения файлов или больших битмап? Когда создаю "HeapCreate,0,0,0", то он растёт, если требуется больше памяти, чем в хипе сейчас. Но есть ещё более важный вопрос. Из уроков Iczelion знаем, что при загрузке библиотеки выполняется DllEntry. Это при загрузке самой библиотеки в первый раз. Да? Когда она уже загружена и её требует другая прога, то DllEntry выполняется снова? Или как сделать так, чтобы при требовании библиотеки выполнялся определённый код. Но важнее, как отследить, когда библиотека выгружается из проги (напр. при закрытии этой проги). Как это узнать, чтобы освободить память, отведённую в DllEntry. Что-то много вопросов. Может кинете ссылочку, где это разом почитать. Можно и на английском, для меня разницы нет. |
|
|
Дата: Апр 13, 2004 23:24:39 А ProcessHeap будет расти бесконечно, если мне понадобятся большие объёмы памяти, напр. для хранения файлов или больших битмап? Нет, конечно, но на пару Мб его вполне хватит. Про DllEntry |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.100 |