MFC内部のリソースを2カ国語分含める方法 2 <不具合発見>

以前、MFC内部のリソースを2カ国語分含める方法にて、元々日本語のVCで作成されたMFCプロジェクトのリソースに、英語版に対応したリソースも一緒に含むことが出来る方法を説明しましたが、この内容に不具合が発見されました。

昨日、テストをしていると、変更したはずのリソースが、元に戻ってしまっているのを発見しました。
それというのも、XXX.rc というリソースファイルは、VCが管理しており、GUIにてリソースを編集・保存すると、VCがXXX.rcを上書きします。
そのときに、手動で行った変更の中の #ifdef 文、#undef 文が削除されてしまうことが分かりました。
(実際には、VCが読み込んだ時点で、対応しない部分を読み飛ばしている模様、結果、保存すると、消えてしまう。。。)

解決方法は、至って簡単で、変更部分を、XXX.rc2 というファイルに書き込むという方法です。
このファイルは、XXX.rc からインクルードされていますので、XXX.rc に書き込んだのと同じ効果が得られます。
「XXX.rc は、VCが管理するから編集しないでね」という注意書きの意味を初めて思い知りました。
いままでもテキストエディタで編集することも多々あったのですが、VCが理解可能な範囲での編集だったようです。

今回は、XXX.rc2 に以下のように追加することで、英語版のリソースを含めることが出来ました。


// ここから ->
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#undef __AFXRES_RC__
#include "afxres.rc" // 標準のコンポーネント
#undef __AFXPRINT_RC__
#include "afxprint.rc" // 印刷/印刷プレビュー リソース
#ifdef _WIN32
LANGUAGE 17, 1
#pragma code_page(932)
#endif //_WIN32
#endif
// <- ここまでを追加

[PR]
by isoq | 2004-09-30 09:14 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇
<< 訪問者数 マンション >>