GetOpenFileName() を使用して標準の Windows の「ファイルを開く」ダイアログを使用すると、シェルは、カスタムのものを含め、ファイル リストを表示するために必要なさまざまな DLL をロードします。
私のアプリケーションでは、TortoiseCVS がアイコンにオーバーレイを描画するために使用する DLL が GdiPlusShutdown() を呼び出していることがわかりました。そのため、「ファイルを開く」ダイアログを表示した後、TortoiseCVS DLL がアンロードされ、GDI+ がシャットダウンされ、私のグラフィック関数はすべて失敗します!
基本的に、古い DLL がアプリケーションによっていつでもロードされ、その状態に対してランダムな処理を開始できるというのは、非常に悪いことのように思えます。私の場合の回避策は非常に簡単でした。GDI+ がシャットダウンされたことを検出した場合は、GDI+ を再起動するだけです。ただし、これがデバッグできないクライアントのマシンで発生した場合、何が起こっているのかを理解するのははるかに困難でした.
誰でも洞察を提供できますか?これが起こらないようにするにはどうすればよいですか?