グローバルのメモリデバイス

解決


origi  2005-08-10 10:17:41  No: 58591  IP: 192.*.*.*

いま、タイトルのようにグローバルのHDCを使って描画をしようと思っているんですが、

HDC hdc;
hdc = GetDC(hwnd);
g_hdc = CreateCompatibleDC(hdc);
g_hdc_mask = CreateCompatibleDC(hdc);
ReleaseDC(hwnd, hdc);

というかんじなんですが CreateCompatibleDC() の説明に、「現在のhdcと互換性のある
メモリデバイスを作る」とありました。
これってhdcが消えると作ったやつも消えるということでしょうか?
あと、作ったHDCって終了時にDeleteDC()すれば問題ないですよね?
そこらへんがよくわからないのでお願いします。

編集 削除
YuO  2005-08-10 11:07:54  No: 58592  IP: 192.*.*.*

> これってhdcが消えると作ったやつも消えるということでしょうか?

消えません。


> あと、作ったHDCって終了時にDeleteDC()すれば問題ないですよね?

問題ないです。
というか,必要なくなったら削除しましょう。
http://msdn.microsoft.com/library/en-us/gdi/devcons_499f.asp

編集 削除
DD.  2005-08-10 11:17:42  No: 58593  IP: 192.*.*.*

>これってhdcが消えると作ったやつも消えるということでしょうか?
消えもしないし問題ないです。

>あと、作ったHDCって終了時にDeleteDC()すれば問題ないですよね?
g_hdcやg_hdc_mask等もグローバルであれば終了時でいいと思いますが、
正確にはそれらの生存期間終了前かと思います。

{
...
g_hdc = CreateCompatibleDC(hdc);
...
DeleteDC(g_hdc);
}

編集 削除
DD.  2005-08-10 11:18:25  No: 58594  IP: 192.*.*.*

YuOさんとかぶってしまいました。。。
申し訳ないです。

編集 削除
origi  2005-08-11 10:22:52  No: 58595  IP: 192.*.*.*

YuOさん、DDさん、回答ありがとうございます。|(_ _)|
互換性で消えることは無いってことですね。
ありがとうございました!

編集 削除