• ベストアンサー

UNICODE対応

VC++.net2003でUNICODE対応ソフトを作る場合 プロジェクトのプロパティで設定をするか、あるいは#define UNICODEをすると思います。 ところでリソースの例えばダイアログのタイトル等の文字列ってUNICODEにする事は可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

すみません、肝心のことを書き忘れていました。 .NET 2003のリソースエディタはUNICODE形式のリソースファイルをサポートしていません。リソースファイル自体はUNICODEで作成できますが、リソースエディタでの編集はできなくなるので、テキストエディタで編集することになります。 .NET 2005ではUNICODEの扱いがかなり拡大されるそうなので、リソースエディタもUNICODE形式リソースファイルに対応するんじゃないかと思うのですが・・・定かではありません。

furyfox
質問者

お礼

ご回答有り難うございます。 情報大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

なるほど、それでは・・・ 実行ファイルに含まれるリソースバイナリの中の文字列は(ダイアログの情報も含めて)例外なくすべてUNICODEですので、リソース内の文字列はUNICODE以外にすること自体ができません。 VC++.net 2003ではUNICODEテキストファイル形式のリソースファイル(.rc)が使用できますので、リソースファイルレベルでもUNICODEが使用できます。

全文を見る
すると、全ての回答が全文表示されます。
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

少し確認させてください。 「ダイアログのタイトル文字列をUNICODEにする」とは、どのような状態を想定されていますか。 「ダイアログのタイトル文字列がUNICODEではない」状態とは、どのように違いますか。 それがはっきりすれば回答がしやすいので。

furyfox
質問者

お礼

「ダイアログのタイトル文字列をUNICODEにする」 とは例えば、ダイアログのタイトルをアラビア語にする。 ↑これをリソースエディタで実現する方法を知りたかったのです。 「ダイアログのタイトル文字列がUNICODEではない」 は、DialogBoxAで作成された、ダイアログボックスの 事でしょうか。 曖昧ですみません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • UNICODE対応ってどういうことなのかわかりません

    VC++とかでUNICODE対応というと文字列をwchar_t型で扱うことなのかなと思うのですが、その場合UTF-8ってどういう扱いになっているのでしょうか? ウィキペディアを見ると、インターネットではUTF-8が主流であるようなことが書かれています。 UTF-8はアスキー文字セットとも互換性があるようなので、char型で文字列を扱うのかなと思いました。 それなのに、VC++でUNICODE対応の設定にするとwchar_tで文字列を扱うようなので、UTF-8がどういう扱いになっているのかよくがわからないのです。 どなたかお答え頂けないでしょうか。 よろしくお願いします。

  • UNICODE対応にするメリットは?

    VisualStudio2005 VC++を用いたアプリケーション開発に、今まではマルチバイト文字を使ってきたのですが、時代の流れとしてはUNICODEに移行すべきなのかな、と漠然と思っています。 ここで疑問なのですが、ずばりUNICODEに移行するメリットは何でしょう? 今のままマルチバイトを使っていても困ることは無いような気がしますし、日本語版・英語版の両方をリリースする場合もリソースの言語切り替えで対応できていますので、UNICODEにどのような利点があるのか、いまひとつピンときません。

  • unicode文字列(日本語)のファイル出力方法

    お世話になっております。 現在、VC++でプログラミングを行っておりますが、 日本語の文字列のファイル出力ができずに困っております。 参考にしたのは以下のサイトです。 http://sunafukin.jp/dannatti/software/vc/control/secure/fprintf_s.html 作成したプロジェクトファイルは以下の設定です。 ・Visual C++のプロジェクト「Win32」 ・「Win32コンソールプロジェクト」 ・アプリケーションの設定はWindowsアプリケーション ・文字セットにUnicodeを選択 文字セットにUnicodeを利用しなければ、日本語の文字列も正常に出力されるのですが、Unicodeを利用すると日本語が全て「?」と表記されてしまいます。 この「?」が出てしまう問題の解決方法をご存じの方がいらっしゃいましたら、ご教授宜しくお願い致します。

  • VC++ マルチバイト文字とUniCode文字??

    VC++のプロジェクトプロパティには文字セット指定があります 『マルチバイト文字セット』『UniCode文字セット』の2者が選択出来ますが、これらの選択の優劣は何処にありますか? この選択の適否が分からない私は参考にしているサンプルがマルチバイトである時にはマルチバイトを、またUniCodeで書かれたサンプルを見ている際にはUniCodeを指定しており、恥ずかしいかぎりです 選択の判断基準を如何すれば良いのかご指導をお願い申し上げます 更に恥ずかしい質問】なぜC#には文字セット指定が見当たらないのでしようか???

  • ユニコード文字列の分割

    csvやファイルパスをカンマや'\'で分割する関数をユニコードでも 対応できるように改修していのですがやり方が分かりません。 関数のロジックはおおよそ以下の通りです。 (仕事先のセキュリティの関係でソースは持ち出せませんので概要ですが・・・) split(str, item, len, words[item][len], delimiter) char* str: 分割対象の文字列 int item:項目数(上限あり) int len:項目の文字数(上限あり) words[item][len]:文字列を分割、項目として格納する配列 char delimiter:区切り文字 int i=0, j=0; while(*str != NULL){ // 文字列を分割する処理 if(str != delimiter){ words[i][j++] = *str } else if{ words[i][j] = NULL i++; j=0; } ・・・・・・・・・ str++; } // 後処理があります VCの設定がマルチバイト対応だったので問題なかったのですが ユニコードに設定を切り替えるとパスの分割でカタカナの「ソ」 を含む文字列が正しく分割されないという事象が発生しました。 関数内の改修だけで解決する方法があるでしょうか? ある程度プロジェクトが動いているのであまり時間をかけないで 対応する必要があります。 OS: Windows7 SP1 環境: VC++ 2008 MFC

  • MFC:リッチエディットからUnicode文字列を受け取りたい

    MFCのダイアログベースでプロジェクトを作成 ↓ プロジェクトのプロパティで「マルチバイト文字セットを使用する」を「Unicode文字セットを使用する」に変更 ↓ エディットボックスとリッチエディット2.0を適当に配置 ↓ エディットボックスとリッチエディット2.0それぞれにコントロール変数を追加 ↓ InitInstance()内に AfxInitRichEdit2(); を追加 ↓ あとは適当なところでエディットボックスとリッチエディット2.0それぞれにGetWindowText関数を使って、記入内容を取得します。     すると、エディットボックスではUnicodeの文字を入れても文字化けしないのに対し、リッチエディット2.0では文字化けしてしまいます。 例えば“Å”の半角文字を(Unicode紹介サイトからコピペする等して)入力すると、エディットボックスではそのまま“Å”なのに、リッチエディット2.0では“A”になります。   ※入力している段階では“Å”と表示されています。GetWindowText関数で取得すると“A”になってしまいます。     リッチエディット2.0からUnicode文字を正常に受け取れる方法はありませんでしょうか。

  • [Unicode対応でないプログラム

    [Unicode対応でないプログラムの現在の言語]の設定について アメリカ在住です。 [地域]画面の[管理]タブにある[Unicode対応でないプログラムの現在の言語]の設定が「英語(米国)」という状態で使ってきたのですが、使用中のソフト(Clip Studio Paint Pro)のフォントに不具合が生じたので、メーカに問い合わせますと、原因は、その言語設定が英語(米国)になっているからと思われるので、そこを日本語(日本)にすることでソフトのフォント上の問題は解消される、というような返事をもらいました。が、同時に、その変更を加えることでどういった影響がOSやアプリに見られるかは分からないので、マイクロソフトへ相談するように、との助言も受けました。 Microsoft Answer Deskを見つけましたが、0120で始まる番号なので、電話できません。(それとも可能なのでしょうか? 一度試したけれど、出来なかったと記憶しています…) そこで、この場を借りて質問させてもらう事に致しました。 質問 (1)アメリカ在住の方で、[Unicode対応でないプログラムの現在の言語]の設定を「日本語(日本語)」にされている方、OSや使われているアプリに何か不具合が生じたりしていませんか? 何ら問題ないでしょうか? お答え願います!

  • GetProcAddressとUnicode、Ansiについて

    先日似たような部分で疑問が生じましたが GetProcAddressについて、実践的な部分をもうちょっと詳しく知りたくなりました。 Unicode版、Ansi版での、ロードする関数名が 末尾にWかAがついてることが多いと思うのですが GetProcAddressには文字列を指定しなければならないため なるべく手間を避けるとしても #ifdef _UNICODE #define _FWA(x) #x"W" #define _tfuncwa(x) L#x L"W" #else #define _FWA(x) #x"A" #define _tfuncwa(x) #x"A" #endif こういう風にプリプロセッサに対してなんらかの配慮をして置いたうえで HMODULE hDLL( LoadLibrary(_T("Shlwapi.dll")) ); typedef HRESULT (__stdcall *Func)( LPCTSTR ); Func func = (Func)GetProcAddress(hDLL,_FWA(PathFileExists)); とかやるようにするか、若しくはDllから動的に引っ張ってくる関数の周りで使う文字列は UnicodeかAnsiかに決め打ちして、必要が生じるなら変換、といった配慮のいずれかは必ず必要になるのでしょうか?

  • Unicode対応でも保存できない文字の保存法

    チャットで使うと不思議なこと(改行など)ができる半角スペースみたいな文字があるのですが、それを保存したいです。 クリップボードに貼り付けるまでは出来るのですが、その後、Unicodeに対応させたメモ帳に貼り付けても認識しませんでした。 また、Unicode対応のクリップボードの履歴を保存させるソフトでも表示されませんでした。その文字と普通の文字を組み合わせてコピーすると、普通の文字だけになっていました。 この不思議な文字は一体何なのでしょうか?どうすれば保存することができますか?

  • Unicodeってなに・・??????

    初歩的な質問なのかもしれませんが、よろしくお願いします。 メールを返信したら、Mail Delivery Subsystem <MAILER-DAEMON@***.******.net> というところから、Returned mail: see transcript for details という件名で返ってきて届きません。 送信者のプロパティから表示名を右クリックすると、「Unicode制御文字の表示」、「Unicodeの挿入」とあります。 送信できないのと関係あるのでしょうか? あるとしたら、解決できるのでしょうか? 早く返したいメールで、困っています。 よろしくお願いします。