[D言語][Regnessem] AddIn/StrRsc/GetLocalStrサービス

 さっきのuiモジュールと同様にしてstrrscモジュールも作ってみた。
 これで

strrsc.GetLocalStr(MODULENAME, "UI", "Switch", r"On/Offの切り替え", buf.length, (LPBYTE)buf);

 みたいなかんじでロケール文字列を取得できる。調子に乗って多言語ファイルも作ってみた。
 昨日のUIサービスを追加するコードを書き直すとこんな感じ。

(略)
import strrsc;

extern (Windows)
int Munokun_OnOff(WPARAM wParam, LPARAM lParam)
{
  PNsmUIServiceInfo pUI = (PNsmUIServiceInfo)lParam;
 	
  if( pUI.nInfoKey == NMUI_GETCAPTION )
  {
    char[64] buf;
 		
    strrsc.GetLocalStr(MODULENAME, "UI", "Switch", r"On/Offの切り替え", buf.length, (LPBYTE)buf);
    lstrcpyW( (LPCWSTR)pUI.lpInfo.lpBuffer, toWCSz(buf) );
  }
  if( pUI.nInfoKey == NMUI_ONCLICK )
  {
    char[64] buf1, buf2;
 		
    if ( !isMunokunOn )
    {
      isMunokunOn = true;
      strrsc.GetLocalStr(MODULENAME, "UI", "On", r"Onにしました", buf1.length, (LPBYTE)buf1);
    }
    else
    {
      isMunokunOn = false;
      strrsc.GetLocalStr(MODULENAME, "UI", "Off", r"Offにしました", buf1.length, (LPBYTE)buf1);
    }
 		
    strrsc.GetLocalStr(MODULENAME, "General", "Caption", r"NSMSGS", buf2.length, (LPBYTE)buf2);
 		
    ui.MessageBox(null, toWCSz(buf1), toWCSz(buf2), MB_OK);
  }

  return 0;
}
(以下略)

  追記:起動中に言語を切り替えても機能メニューの文字列はそのまんまなのね。Raoさんがa17で直すかもっておっしゃってるので期待age。 よく読み返すとそうはおっしゃってないですね。すいません。

Regnessem用 : NSMSGS 0.5系プラグイン仕様書はこちら



 それにしても、D言語のモジュールっていうのはいいね。
 #includeのときみたいに堂々巡りにならないし、名前空間を使って
 クラスみたいな書き方も出来るしね。
 Javaはよく知らないんだけど、そこから受け継いだのかな。。。