0

複数のGUIアプリケーションを使用するMFCプロジェクトに取り組んでいます。目的は、すべてのリソースを個々のプロジェクトから単一のリソースdllに移動することです。

いくつかの変更の後、私は単一のリソースのみのdllプロジェクトと複数のGUIプロジェクトを持っています。各GUIプロジェクトは、次のコードを使用してリソースdllにアクセスしています。

BOOL CFooApp::InitInstance()
{
    HINSTANCE hRes = NULL;
    hRes = LoadLibrary(_T("Resource.dll"));
    if(hRes) AfxSetResourceHandle(hRes);
    ....

これまでのところ、2つの問題があることを除いて、問題なく動作します。

  1. GUI exeファイルは、Windowsエクスプローラーのアイコンを失います。IDR_MAINFRAMEからアイコンをロードするMFCボイラープレートコードがいくつかありますが、これはアプリケーションウィンドウの上部にあるアイコンにのみ影響します。
  2. クラスウィザードは機能しなくなります。たとえば、リソースビューのダイアログボタンをクリックしてボタンハンドラーを追加することはできなくなりましたか?

これらの問題を解決する方法は?

4

2 に答える 2

1

Explorerは、exeに埋め込まれているリソースからアイコンを取得します。exeがdllからすべてのリソースをプルしている場合、Explorerは何も検出しません。exeファイルにアイコンを1つだけ追加することはできませんか?

2に関しては、あなたは詰め物をしていると思います。複数の衛星言語リソースdllを使用するときに、以前にこの問題が発生しました。これを修正する唯一の方法は、exe自体に1つの(英語の)リソースセットを保持することでしたが、これは、私たちに固有のさまざまな理由で不可能でした。結局、私はウィザードなしでコーディングすることに慣れました。:/

于 2012-09-05T10:07:06.053 に答える
0

今、私はほとんど問題を解決した簡単な方法を使用しています。中央のrcファイル(上記の例ではResource.rcなど)を各GUIプロジェクトに追加するだけです。したがって:1)ClassWizardを使用できます。2)GUIごとにアイコンが生成されます。3)GUIプロジェクトは英語バージョンのrcファイルを参照していますが、GUIexeは他の言語のResource.dllをロードできます。唯一の欠点は、すべてのGUIに同じアイコンが付いていることです。おそらく、rcファイルで最初に見つかったアイコンです。

于 2012-09-10T16:27:49.910 に答える