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

解決


origi  2005-08-10 19:17:41  No: 58591

いま、タイトルのようにグローバルの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 20:07:54  No: 58592

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

消えません。

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

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


DD.  2005-08-10 20:17:42  No: 58593

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

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

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


DD.  2005-08-10 20:18:25  No: 58594

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


origi  2005-08-11 19:22:52  No: 58595

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加