2012年5月28日月曜日

リソース(.rc) で単語の共通化

リソースを書いていて、後々変更するかもしれないけど暫定の名前を使うことありますよね?
それがたくさんあると、後で変更するときに少しメンドクサイですよね?

置換すれば一瞬だって?

そうだね!

でも、ここでは別のアプローチをしてみたいと思います。

プリプロセッサがあるじゃない
リソースファイル(.rc) でもマクロが使えます。
マクロで単語を共通化しちゃいましょう。

Win32 アプリケーションのテンプレートプロジェクトで実験してみましょう。
//Microsoft Visual C++ で生成されたリソース スクリプトです。
//
#include "resource.h"

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/stringize.hpp>

#define SOFTWARE_NAME ソフト名

// ~~~~~~ 略 ~~~~~~~~

IDC_RESTEST MENU
BEGIN
    POPUP "ファイル(&F)"
    BEGIN
        MENUITEM BOOST_PP_STRINGIZE(BOOST_PP_CAT(SOFTWARE_NAME,の終了(&X))), IDM_EXIT
    END
    POPUP "ヘルプ(&H)"
    BEGIN
        MENUITEM BOOST_PP_STRINGIZE(BOOST_PP_CAT(SOFTWARE_NAME,のバージョン情報(&A)...)), IDM_ABOUT
    END
END


※[プロジェクトのプロパティ] - [リソース] - [追加のインクルード ディレクトリ] にパスを追加しましょう

これをビルドし、実行するとこうなります。

おわり。

追記
半角スペースを入れるには、 「\x20」とする必要があります。
ちょっと不恰好ですね…

0 件のコメント:

コメントを投稿