Как узнать связан ли HPEN с HDC?
От: Чили Россия  
Дата: 05.03.07 15:10
Оценка:
Собсвенно сабж!
Если делать по-хорошему, то перед удалением ресурса его нужно освободить.
SelectObject(hdc, hpen); 
...
SelectObject(hdc, oldpen);
DeleteObject(hpen);

но как узнать был ли выбран карандаш в устройстве hdc или нет.
Re: Как узнать связан ли HPEN с HDC?
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 05.03.07 15:23
Оценка:
Здравствуйте, Чили, Вы писали:

Ч>но как узнать был ли выбран карандаш в устройстве hdc или нет.


GetCurrentObject() подойдет?
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[2]: Как узнать связан ли HPEN с HDC?
От: Чили Россия  
Дата: 06.03.07 05:28
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

Ч>>но как узнать был ли выбран карандаш в устройстве hdc или нет.

SDB>GetCurrentObject() подойдет?
Не подойдет!
Допустим есть класс:
class CPen {
  HPEN handle;
  CPen() { handle = CreatePen(...);}
  ~CPen() { DeleteObject(handle);}
};

Деструктор ничего не знает в каких отношениях с DC состоял handle!
(Тоже относится ко всем графическим ресурсам (Brush,...), просто сейчас мне нужен какрандаш.)
Re[3]: Как узнать связан ли HPEN с HDC?
От: Вумудщзук Беларусь  
Дата: 06.03.07 07:37
Оценка:
>Не подойдет!
>Допустим есть класс:
>
class CPen {
  HPEN handle;
  CPen() { handle = CreatePen(...);}
  ~CPen() { DeleteObject(handle);}
>};

>Деструктор ничего не знает в каких отношениях с DC состоял handle!
Про какой DC в данном куске кода речь? А, кста, зачем в данном случае это знать? Ну, допустим, деструктор узнает, что данный пен является текущим в некоем hDC, от этого как-то изменится его поведение? — нет, всё равно удалять надо, но перед удалением надо восстановить предыдущий пен, а он здесь в наличии?
Homo sum et nihil humani a me alienum puto...
Re[4]: Как узнать связан ли HPEN с HDC?
От: Чили Россия  
Дата: 06.03.07 11:04
Оценка:
Здравствуйте, Вумудщзук, Вы писали:

>>Допустим есть класс:

>>
class CPen {
В>  HPEN handle;
В>  CPen() { handle = CreatePen(...);}
В>  ~CPen() { DeleteObject(handle);}
>>};

>>Деструктор ничего не знает в каких отношениях с DC состоял handle!
В>Про какой DC в данном куске кода речь?
DC, который я имел ввиду, это следущее:
CPen pen;
SelectObject(hDC, pen.handle);

В>А, кста, зачем в данном случае это знать? Ну, допустим, деструктор узнает, что данный пен является текущим в некоем hDC, от этого как-то изменится его поведение? — нет, всё равно удалять надо, но перед удалением надо восстановить предыдущий пен,
Правило хорошего тона
В>а он здесь в наличии?
В том то и дело, что деструктор ничего не знает про DC !
Re[5]: Как узнать связан ли HPEN с HDC?
От: Andrew S Россия http://alchemy-lab.com
Дата: 06.03.07 11:35
Оценка:
В>>А, кста, зачем в данном случае это знать? Ну, допустим, деструктор узнает, что данный пен является текущим в некоем hDC, от этого как-то изменится его поведение? — нет, всё равно удалять надо, но перед удалением надо восстановить предыдущий пен,
Ч>Правило хорошего тона
В>>а он здесь в наличии?
Ч>В том то и дело, что деструктор ничего не знает про DC !

И не должен. Это должен знать клиентский код — например, посредством авто-селектора, см. Исходники.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[6]: Как узнать связан ли HPEN с HDC?
От: Чили Россия  
Дата: 06.03.07 11:51
Оценка:
Здравствуйте, Andrew S, Вы писали:

AS>И не должен. Это должен знать клиентский код — например, посредством авто-селектора, см. Исходники

Авто-селектор — шо це таке?
Re[7]: Как узнать связан ли HPEN с HDC?
От: Вумудщзук Беларусь  
Дата: 06.03.07 11:58
Оценка:
>>И не должен. Это должен знать клиентский код — например, посредством авто-селектора, см. Исходники
>Авто-селектор — шо це таке?
таки залезть в Исходники или в поиск религия не позволяет?
Gdi Objects Selector
Автор: Нахлобуч
Дата: 19.02.05
Homo sum et nihil humani a me alienum puto...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.