リソースを格納するさまざまなdllを切り替える便利なクラスがあります。各dllは、そのenum
値を使用して自身(インスタンスおよびその他の情報)を登録します。情報は静的フィールドに保存されます。enum
リソースハンドルを切り替える必要がある場合は、現在のリソースハンドルを切り替えて古いリソースハンドルを保存する、特定のモジュール値を持つコンストラクターを使用します。
状況は以下のとおりです。アルゴリズム付きのdllで現在のモジュール状態を取得しAfxGetModuleState
、便利なクラスを使用してリソースハンドルをリソース付きのdllに切り替えてから、アルゴリズム付きのdllで再び使用AfxGetModuleState
します。AfxGetModuleState
アルゴリズムを使用したdllと便利なクラスで返される構造体のアドレスが異なります。
私のアプリケーションはシングルスレッドであるため、によって返される構造のアドレスはAfxGetModuleState
同じである必要があります(グローバルである必要があります)が、異なります。
これにより、特定のdllからのリソースをロードできなくなります。これは、便利なクラスでリソースを含むdllに設定された現在のリソースハンドルが、アルゴリズムを使用するdllでnullのままになり、CString::LoadString(nID)
失敗するためです。
私のアプリケーションのデバッグバージョンはうまく機能しますが、エラーはにのみ表示されreleasewithdebug
ます。
PS:私は初心者のMFCプログラマーです。