GDIオブジェクトの上書き作成

[戻る]
夢幻 2003/09/18(木) 22:14:12
ふと疑問に思ったのですが次のようなプログラムを実行したとき
GDIはちゃんと解放されるのでしょうか

HPEN hPen = CreatePen(PS_SOLID,1,RGB(255,0,0));
hPen = CreatePen(PS_SOLID,1,RGB(0,255,0));
DeleteObject(hPen);

たいちう 2003/09/19(金) 09:48:05
解放されないはず。
同じようなことをブラシで行った場合、
数万回でブラシが作成できなくなりました。
ご確認ください。

PATIO 2003/09/19(金) 13:25:13
APIでCreateしたGDIリソースはDeleteObjectしないと開放されません。
書かれている例の場合、あとでCreateした分は開放されますが、
最初にCreateした分のハンドルが消失してしまい、開放したくても開放できないです。
ハンドルを保持する変数を二つ用意してそれぞれDeleteObjectするか、
二つ目のPenをCreateする前に最初にCreateしたPenを開放しないと
リソースがリークしてしまいます。

夢幻 2003/09/19(金) 17:20:25
[[解決]]
やっぱりそうでしたか。
こんな些細な質問にご返答してくださってありがとうございました。

古いスレッドには追加発言できません。