| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как управлять кистью? |
| Автор: MoRoZ 9.6.2004, 13:04 |
| Если создать кисть так: CPen pen(penStyle, penWidth, penColor); то она будет работать не очень-то долго, а потом выдаст "Запрашиваемый ресурс недоступен". Я избавился от этого, разместив перо в динамической памяти, но как теперь управлять его параметрами? |
| Автор: Step 9.6.2004, 13:55 |
| Советую объявить его как объект класса, первоночальную инициализацую провести в конструкторе, а управлять потом можно где угодно pen. |
| Автор: Олег М 11.6.2004, 10:34 |
| При выходе из процедуры (из блока в общем случае) для статичных объектов вызывается деструктор, в частности для CPen в деструкторе будет вызвана функция ::DeleteObject, после объект "перо", естественно удаляется. Динамические объекты (созданные с помощью new) остаются висеть в памяти до тех пор пока явно не вызовешь delete. Судя по всему ты сделал сразу несколько ошибок: 1. Не восстанавливаешь предыдущее перо в CDC [code] CPen pen(PS_SOLID,1,RGB(0,0,0)), *pOldPen; pOldPen=dc.SelectObject(&pen); //Код ///////// ////////// dc.SelectObject(pOldPen); //return; 2. Вслучае с динамической памятью - не удаляешь объёкт Сделай так как тебе посоветовал Step |