C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: CString.LoadStringの挙動をC#で


(過去ログ 19 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■7767 / inTopicNo.1)  CString.LoadStringの挙動をC#で
  
□投稿者/ 萩泉 (1回)-(2007/09/14(Fri) 15:58:09)

分類:[C#] 

使用言語はMicrosoftVisualStudio2005のC#です。
パソコンはMicrosoft Windows XP Professionalです。

C++でようやくひとつのプログラムを完成させたまでの経験値です。


VC++ 6.0で作られたツールをC#に移行せよとのことで…。

    CString massage;
    massage.LoadString(nErrorCode);
このようなコードで詰まっています。

nErrorCodeはint型で、ストリングテーブルにあるIDなのだそうです。
まずストリングテーブルを触ったことが無く、
この操作はストリングテーブルでIDと関連付けされたメッセージを呼ぶものと教えられ、
リソースIDとかストリングテーブルとかで検索をしたものの、
まったく理解できるページに行き当たれないという状態です。

C#でストリングテーブルから文字列を取得するには何型を選んでどうすればよいのでしょう。
どなたかご教授いただけませんでしょうか。

引用返信 編集キー/
■7773 / inTopicNo.2)  Re[1]: CString.LoadStringの挙動をC#で
□投稿者/ 囚人 (166回)-(2007/09/14(Fri) 16:52:50)
>nErrorCodeはint型で、ストリングテーブルにあるIDなのだそうです。
>まずストリングテーブルを触ったことが無く、
>この操作はストリングテーブルでIDと関連付けされたメッセージを呼ぶものと教えられ、
>リソースIDとかストリングテーブルとかで検索をしたものの、
>まったく理解できるページに行き当たれないという状態です。

まずそこを理解しないと、移行も何も出来ないと思いますが…。
ストリングテーブルというものはなくて、String 型が直にリソースからロードする方法もありません。
System.Resources.ResourceManager クラス辺りを調べたら分かるでしょうか。

引用返信 編集キー/
■7775 / inTopicNo.3)  Re[1]: CString.LoadStringの挙動をC#で
□投稿者/ Mr.T (94回)-(2007/09/14(Fri) 17:00:56)
Mr.Tです、こんにちは。

No7767 (萩泉 さん) に返信
> 使用言語はMicrosoftVisualStudio2005のC#です。
> パソコンはMicrosoft Windows XP Professionalです。
>
> C++でようやくひとつのプログラムを完成させたまでの経験値です。
>
>
> VC++ 6.0で作られたツールをC#に移行せよとのことで…。
>
> CString massage;
> massage.LoadString(nErrorCode);
> このようなコードで詰まっています。
>
> nErrorCodeはint型で、ストリングテーブルにあるIDなのだそうです。
> まずストリングテーブルを触ったことが無く、
> この操作はストリングテーブルでIDと関連付けされたメッセージを呼ぶものと教えられ、
> リソースIDとかストリングテーブルとかで検索をしたものの、
> まったく理解できるページに行き当たれないという状態です。
>
> C#でストリングテーブルから文字列を取得するには何型を選んでどうすればよいのでしょう。
> どなたかご教授いただけませんでしょうか。

C++はまったくわからねーのですが、
http://msdn2.microsoft.com/ja-jp/library/dhs35kds(VS.80).aspx
あたりとかは参考になりませんか。
#上の内容はやってみるとえらい簡単にできるはずなんですけどね


引用返信 編集キー/
■7776 / inTopicNo.4)  Re[2]: CString.LoadStringの挙動をC#で
□投稿者/ 萩泉 (3回)-(2007/09/14(Fri) 17:13:48)
ご教授ありがとうございます。

> まずそこを理解しないと、移行も何も出来ないと思いますが…。
確かにそうですね、エラーが多くて少しあせっていたようです。

囚人さんとMr.Tさんの教えてくださったキーワードでもう少し勉強してみます。
引用返信 編集キー/
■7786 / inTopicNo.5)  Re[2]: CString.LoadStringの挙動をC#で
□投稿者/ 渋木宏明(ひどり) (363回)-(2007/09/14(Fri) 19:05:42)
渋木宏明(ひどり) さんの Web サイト
2007/09/14(Fri) 19:06:37 編集(投稿者)

そもそも、旧来の VC++ が扱う「リソース」と、.NET が標準で扱う「リソース」はまったくの別物です。

どうせ .NET で「書きなおす」のであれば、原始的なストリングテーブルを .NET でどう実現するのかとゆー後ろ向きの考え方はしない方が吉です。

VS2005 なら

> ストリングテーブルというものはなくて、String 型が直にリソースからロードする方法もありません。
> System.Resources.ResourceManager クラス辺りを調べたら分かるでしょうか。

という操作を、さらに簡単に扱う方法が用意されています。

VS2005 で Windows アプリケーションのプロジェクトを新規作成した場合、プロジェクトの Properties フォルダ内に Resources.resx というファイルが自動的に作成・登録されています。

Resources.resx をダブルクリックして開くと、デフォルトでは「文字列」の編集画面が表示されるはずです。
(表示されなかったら編集画面左上のボタンで編集対象を「文字列」にきりかえてください)

この「文字列」編集画面で、「名前=Hoge 値=ほげ」を登録すると、アプリケーションのソースコード中から

string s = Properties.Resources.Hoge;

のように扱うことが出来ます。(s に「ほげ」が代入される)

引用返信 編集キー/
■7851 / inTopicNo.6)  Re[3]: CString.LoadStringの挙動をC#で
□投稿者/ 萩泉 (5回)-(2007/09/18(Tue) 10:10:37)
2007/09/18(Tue) 16:45:29 編集(投稿者)

すみません、家に環境が無いので間が空きました。

> そもそも、旧来の VC++ が扱う「リソース」と、.NET が標準で扱う「リソース」はまったくの別物です。
>
> どうせ .NET で「書きなおす」のであれば、原始的なストリングテーブルを .NET でどう実現するのかとゆー後ろ向きの考え方はしない方が吉です。
はい、そうでしたね。
ただ、元のツールの実際の使用方法もきちんと見せてもらえていないので、
そのまま再現しようとしてしまいました。


> VS2005 で Windows アプリケーションのプロジェクトを新規作成した場合、プロジェクトの Properties フォルダ内に Resources.resx というファイルが自動的に作成・登録されています。
> この「文字列」編集画面で、「名前=Hoge 値=ほげ」を登録すると、アプリケーションのソースコード中から
> string s = Properties.Resources.Hoge;
> のように扱うことが出来ます。(s に「ほげ」が代入される)
実際にこれもMr.TさんのURLを参考に登録の操作をしてみたのですが、
ソースの中でどう使うのかはわかりませんでした。
ありがとうございます。
propertiesクラス周辺をまた見てみます。

またどうしてもできそうに無かったら、戻ってくると思います。
引用返信 編集キー/
■7881 / inTopicNo.7)  Re[4]: CString.LoadStringの挙動をC#で
□投稿者/ 萩泉 (6回)-(2007/09/18(Tue) 16:44:16)
いろいろとありがとうございました。

このツールを組み込むプロジェクトの方で、リソースが個々に作られるようなので、
呼び出し元でstring変数に代入する作業をして、それを引数にもらう形にするということで、何とかなりそうです。


ですので、こちらは解決したということで、お世話になりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -