1

当初、私の MFC プログラムには、2 つの言語のリソースを含む 1 つの .rc ファイルがありました。しかし、今では 2 つの個別のリソースのみの dll プロジェクト (同じソリューション内) に 2 つの .rc ファイルがあり、LoadLibrary() と AfxSetResourceHandle() を使用して言語を動的に選択します (この記事を参照しました)。

うまく機能しているように見えますが、1 つの問題は、リソースのみの dll プロジェクトのダイアログに対して、ダイアログ エディターを適切に使用できないことです。ダイアログは正常に表示されますが、コントロールをダブルクリックしたり、プロパティ メニューを使用してイベント ハンドラーを追加することはできません。同じソリューション内の別々のプロジェクトにあるコードとリソース ファイルを接続する方法はありますか?

編集

少しアプローチを変えました。別のリソース プロジェクトで新しい RC ファイルを作成する代わりに、それらをメイン プロジェクトで作成し、ビルドから除外しました。そして、それらを別のリソース プロジェクトから参照できるようにしました。

重要なポイントの 1 つは、各 RC ファイルの読み取り専用シンボル ディレクティブ#include "resource.h"に追加したことです (これを行うには、リソース ビューで RC ファイルを右クリックし、[リソース インクルード] 項目を選択します)。これは、複数の言語のリソースを持つメイン プロジェクトの元の RC ファイルに関連するものです。なぜ追加する必要があるのか​​わかりませんが、サテライト dll が正常に動作するために必要なようです。"resource.h"

残っている 1 つの問題は、その複数の RC ファイルをどのように維持するかです。リソースを追加するために、元の RC ファイルとその resource.h ファイルを維持する必要がある場合は、最初にリソースを元の RC ファイルに追加してから、それらをすべての言語固有の RC ファイルにコピーする必要があります。これは正しい方法ですか、それとも元の RC ファイルなしで続行できますか?

4

1 に答える 1

1

このリソースのみの DLL の RC ファイルもプロジェクトに含めます。ただし、ビルドから除外します。

2 つのリソース ファイルがある場合。別の方法でリソース ファイルを使用します。

  1. 通常の MFC リソース ファイルを使用してスタンドアロン プログラムを作成する...
  2. 内部ですべてのダイアログ リソースに言語タグを使用する
  3. このリソースを 2 番目のプロジェクトで使用して、サテライト DLL をビルドするよりも
  4. 特定の言語でタグ付けされたリソースが含まれないように、リソース コンパイラ定義を設定します。
于 2014-05-07T11:59:55.900 に答える