2017-12-20 19 views
0

私はVisual StudioでVC++、MFCを使用する多言語アプリケーションに取り組んでいます。私は各言語ごとに別々の.rcファイルを持っています。
複数のアプリケーションに/rcファイルをロード/ロードするには?

English.rc //having string table for English language 
French.rc //having string table for French language 
German.rc  //having string table for German language 

各言語は、その文字列のテーブルが維持されたと言います。
関数LoadString(ID_HERE)を使用すると、文字列テーブルから文字列値を取得できます。異なる言語の.rcファイルをリンクして、異なる言語の文字列を取得できるようにしたい。既定ではEnglish.rcファイルがプロジェクトに関連付けられています。私はそれを別の.rcファイルを使ってどのように変更できるのか知りたい。

実行時に特定の言語の.rcファイルをロード/リンクする方法や、ドロップダウンボックスで任意の言語を選択して言語を変更する方法はありますか?
私はDLLメソッドを使いたくありません。 .rcファイルをプロジェクトにリンクする直接の方法はありますか?

+2

*「私はそれのためにDLLのメソッドを使用したくない」*:言語リソースDLLは次のようにソートの作品

リソーススクリプトをリソース専用モジュールにコンパイルすることが標準的なソリューションです。 [アプリケーションへの多言語ユーザーインターフェイスサポートの追加](https://msdn.microsoft.com/en-us/library/windows/desktop/ee845043.aspx)を参照してください。 – IInspectable

+0

@IInspectable私はいくつかのリンクを調べました。それらのうちの1つでは、すべての.rcファイルを一緒に追加して使用しようと別のDLLを作成しました。あなたが提供したリンクも同様の 'HelloModule.dll'を持っていると思います – Himanshu

+0

私がリンクしているチュートリアルでは、言語ごとに個別のMUIモジュールが作成され、言語に依存しない* "HelloModule.dll"中立のフォールバックリソース。特定のリソースの複数言語バージョンを同じモジュールに格納することは可能ですが、言語固有のMUIファイルを自動的にプロービングすることで、システムのMUIサポートを使用できなくなります。詳細については、[LANGUAGEステートメント](https://msdn.microsoft.com/en-us/library/windows/desktop/aa381019.aspx)のドキュメントを参照してください。 – IInspectable

答えて

0

これは方法です。リソースdllを作成し、そこからリソースをロードする必要があります。別の方法は、条件に応じてすべてのリソースを言語として持つことです。次に、MFCはオペレーティングシステムの言語に基づいてリソースを選択します。 しかし、大規模なプロジェクトではすべての言語を同期させておくことはほとんど不可能であり、表示される言語を制御することはできません。私は、それが意味することになっているかわからないけど -

HMODULE hm = ::LoadLibrary(language_dll); 
if(hm) 
{ 
    AfxSetResourceHandle(hm); 

    if(m_hLanguageDLL) 
     ::FreeLibrary(m_hLanguageDLL); 
    m_hLanguageDLL = hm; 
} 
関連する問題