SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

UWPアプリ開発の最前線

Windows電卓の中はどうなっているのだろう?(後編)
~オープンソースのコードを改造してみよう

UWPアプリ開発の最前線 第14回

「坪」の定義を追加する

 どこに何を追加すればよいのかだいたいの見当がついたので、作業していきましょう。まずは、文字列リソースから。日本語用のResources.reswファイルを開いて、定義名「UnitName_Tsubo」と「UnitAbbreviation_Tsubo」を追加します(次の画像)。値はどちらも「坪」とします。

文字列リソースに「坪」を追加した
文字列リソースに「坪」を追加した(日本語のResources.resw

 この「電卓」アプリの既定の言語は「en-US」なので英語(en-US)用のResources.reswファイルにも、同様に追加しておきます(次の画像)。値はどちらも「Tsubo」です。これで、日本語環境のWindowsでは「坪」が、それ以外の言語環境では「Tsubo」が使われるようになります。

文字列リソースに「Tsubo」を追加した
文字列リソースに「Tsubo」を追加した(英語のResources.resw

 次に定数ですが、先ほど見つけたView ModelのUnitConverterDataLoader.cppUnitConverterUnits::Area_SquareMillimeterのところにカーソルを置いて[F12]キーを押すと、UnitConverterUnits列挙体の定義にジャンプします(UnitConverterDataConstants.h)。このUnitConverterUnits列挙体の定義の末尾を、次のコードのように修正します。新しい定義Area_Tsuboを追加するだけでなく、UnitEndの定義も修正する必要があります。

UnitConverterUnits列挙体にArea_Tsuboを追加(UnitConverterDataConstants.h
Data_Zetabytes = UnitStart + 164,
Area_Pyeong = UnitStart + 165,
//UnitEnd = Area_Pyeong
// 「坪」を追加↓
Area_Tsubo = UnitStart + 166,
UnitEnd = Area_Tsubo

「坪」を選択肢のコレクションに読み込ませる

 次に、先ほど見つけたUnitConverterDataLoader.cppGetUnitsメソッドに、上で定義した文字列リソースを読み込むコードを追加します(次のコード)。

文字列リソースを読み込むコードを追加(UnitConverterDataLoader.cpp
void UnitConverterDataLoader::GetUnits(_In_ unordered_map<ViewMode, ……省略……)
{
    ……省略……
    vector areaUnits;

    // 「坪」を追加
    if (m_currentRegionCode == L"JP")
    {
        areaUnits.push_back(
            OrderedUnit{  UnitConverterUnits::Area_Tsubo,
                            GetLocalizedStringName(L"UnitName_Tsubo"),
                            GetLocalizedStringName(L"UnitAbbreviation_Tsubo"),
                            16 });
    }

    areaUnits.push_back(
    ……省略……

 上のコードでは、エンドユーザーがWindowsに設定した地域が日本のときだけ、「坪」を読み込むようにしています。また、OrderedUnitコンストラクターの第4引数の16というのは、選択肢の表示順です。「16」というのは、ドロップダウンの末尾になります。他の場所に表示したいときは、この「16」を書き換えるとともに、後続のpush_backメソッドに書かれている表示順を調整してください。

 以上で、画面の選択肢に「坪」が追加されました。しかし、これでビルドして実行してみると、残念ながらエラーになってしまいます。

次のページ
「坪」を変換できるようにする

関連リンク

この記事は参考になりましたか?

UWPアプリ開発の最前線連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11706 2019/09/24 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー