C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

WinAPIのLoadImage関数でDisposeは必要か

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■91749 / inTopicNo.1)  WinAPIのLoadImage関数でDisposeは必要か
  
□投稿者/ SsS (1回)-(2019/07/29(Mon) 22:56:37)

分類:[.NET 全般] 

WinAPIのLoadImage関数を使ってカーソルファイルを読み込んだ後、
プログラムを終了する時に、読み込んだデータをDisposeする必要があるのでしょうか?

どこかのwebページにはdisposeが必要だと書かれていました。

ただ、disposeが書かれたページはその一つしか見つかりませんでした。

そもそも、disposeが必要かどうかってどうやって判断すれば良いのでしょうか?

プログラム後にもメモリに残り続けているかどうかって
どうやって判断すれば良いのでしょうか?


引用返信 編集キー/
■91750 / inTopicNo.2)  Re[1]: WinAPIのLoadImage関数でDisposeは必要か
□投稿者/ とっちゃん (611回)-(2019/07/30(Tue) 00:17:38)
No91749 (SsS さん) に返信
> WinAPIのLoadImage関数を使ってカーソルファイルを読み込んだ後、
> プログラムを終了する時に、読み込んだデータをDisposeする必要があるのでしょうか?
>
> どこかのwebページにはdisposeが必要だと書かれていました。
>
> ただ、disposeが書かれたページはその一つしか見つかりませんでした。
>
> そもそも、disposeが必要かどうかってどうやって判断すれば良いのでしょうか?
>
> プログラム後にもメモリに残り続けているかどうかって
> どうやって判断すれば良いのでしょうか?
>
>
LoadImageのリファレンスは参照していますか?
一応リンクしておきます。

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadimagea

LoadImageで取得したハンドルは、LR_SHARED をつけない限り、DeleteObject, DestroyCursor, DestroyIcon の
いずれかの削除関数を呼び出す必要があります。
LR_SHARED は必ずつけられるわけではないので、詳しくはリファレンス等を参照してください。

ローカル変数でハンドルを保持するなら不要になるタイミングで、上記のいずれかのAPIでGDIリソースを削除をする必要があります。

そうではなく、クラスメンバーで保持する場合は、そのクラスは、アンマネージリソースを持ちますので、
IDisposable インターフェースを実装し、しかるべきタイミングで呼び出される Dispose メソッド内で上記APIを呼び出す必要があります。

https://docs.microsoft.com/en-us/dotnet/api/system.idisposable?view=netframework-4.8


引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ