Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)