[スレッド全体]

2011/4/30 (土) 20:30:02 なすこじ  
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16
[5722] Re2:リソースの外部DLL化
▼ syatさん
すみません、私変なことを書いていました。

>  ↓使用例
> ::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME, CSelectLang::LoadString2( STR_ERR_DLGFIND1 ) );
>  自動変数の返却がだめならstatic変数のバッファでもよいので。。


ならその場で使うだけなのでstaticでOKですね。

2011/5/2 (月) 22:42:45 syat  
Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
[5723] Re3:リソースの外部DLL化
▼ なすこじさん
連続してLoadStringしてるところは呼び元でバッファを準備するしかないと思いますが、例のようにメッセージボックスを出す程度の用途なら便利関数でさらっと書きたいなぁ、と思ったので。

ちなみにUNICODE版には渡した文字列をA <-> W変換してくれるto_wchar, to_acharという関数があって、使い勝手が良いです。(引数はたったの一個)
どうやってるのかと思ったら内部で64個分のバッファを用意して使い回してました。

>だれが(日本人?外国人?)どのように(日本語OS?英語OS?日英以外のローカライズ版OS?で)利用するかをもう少し考えないと変なものができてしまいそうです。
OSの違いはちょっとわからないですが、基本、日本語より英語のほうが得意な人が使うのでしょう。
本体と言語DLLをセットにして「英語版」として配布するイメージなら、言語の混在はあまり気になりません。

>・初期値データも翻訳されています
これは、難しい。。
言語が絡む所ってタイプ別設定の名称だったりカスタムメニュー名だったりで、起動時に初期設定されてしまうので、例えば日本語で使っていて後から英語DLLを導入した場合、メニューやダイアログはほとんど英語なのに、タイプ別設定やウィンドウタイトルなどが日本語混じりになって???です。
iniを消して全再起動すればよいのですけど。
根本的に直すなら、今後の機能実装で初期値をiniにベタ書きしないような、本体での対応が必要な気がします。
iniには初期値として空欄を設定し、画面表示は空欄だったらリソースから取った文字列を表示するとか。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.000][st:0.000]