こんにちわ
質問おねがいします
Win32 apiって文字列を扱うときになぜ
TEXT("")の中に入れるようにしたりT("")のなかに入れたりしなければいけないのでしょうか?
また二次配列をつかうときはどのように記述すればいいのでしょうか?
頭の悪い質問してすみません
Win32 api のプログラムについて質問があります
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: Win32 api のプログラムについて質問があります
TEXT()と_T()はマクロで、VC++文字コードの切り替えに対応するために存在します。SantaxPro さんが書きました:Win32 apiって文字列を扱うときになぜ
TEXT("")の中に入れるようにしたりT("")のなかに入れたりしなければいけないのでしょうか?
文字コードは、UNICODEとマルチバイト文字があるのですが、どちらにも対応できる様にするためのマクロなんですね。
まぁ、Windowsの日本語の歴史と関係するんですが初めマルチバイト文字(Sjis)があって、後からUNICODEが出てきたので両対応にしたと言うわけです。
Windows 95/98/Meにはマルチバイト文字しか使えません。
これはC言語の文法の話でしょうか?SantaxPro さんが書きました:また二次配列をつかうときはどのように記述すればいいのでしょうか?
頭の悪い質問してすみません
状況が良く分かりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: Win32 api のプログラムについて質問があります
TEXT,_Tマクロの使用目的は既に回答されていますが、使わなければいけない、ということはありません。SantaxPro さんが書きました:Win32 apiって文字列を扱うときになぜ
TEXT("")の中に入れるようにしたりT("")のなかに入れたりしなければいけないのでしょうか?
ANSI版のWin32 APIを使えば入れなくてもかまいません。
むしろ、プロジェクトがUnicode文字セットを使う設定になっていて、ANSI版のWin32 APIの引数でTEXTマクロを使うと、コンパイルエラーになります。
Re: Win32 api のプログラムについて質問があります
Unicode版を明示的に使う場合でもTEXTマクロは不要ですね。ISLe さんが書きました:ANSI版のWin32 APIを使えば入れなくてもかまいません。
むしろ、プロジェクトがUnicode文字セットを使う設定になっていて、ANSI版のWin32 APIの引数でTEXTマクロを使うと、コンパイルエラーになります。
- ANSI版 (CreateWindowExAなど) を明示的に使う場合は,標準文字列を使う
- Unicode版 (CreateWindowExWなど) を明示的に使う場合は,ワイド文字列を使う
- ANSI/Unicode共通コード版 (CreateWindowExなど) を使う場合は,TEXTマクロを使う
Re: Win32 api のプログラムについて質問があります
回答ありがとうございます 返信遅くなってすみません
使う目的はわかりました
二個目の質問は コンソールアプリケーションでの
str[3][10] = ("林檎","ゴリラ","ラッパ"
"パンツ", "釣り", "リンパ球"
"ウサギ", "義理", "利子");
を
static LPCTSTR str[3][10] = TEXT("林檎","ゴリラ","ラッパ"
"パンツ", "釣り", "リンパ球"
"ウサギ", "義理", "利子"););
みたいになのを
両方に対応できるように_T("")とかTEXT("")とかを使って書くにはどうしたらいいんでしょうか?
使う目的はわかりました
二個目の質問は コンソールアプリケーションでの
str[3][10] = ("林檎","ゴリラ","ラッパ"
"パンツ", "釣り", "リンパ球"
"ウサギ", "義理", "利子");
を
static LPCTSTR str[3][10] = TEXT("林檎","ゴリラ","ラッパ"
"パンツ", "釣り", "リンパ球"
"ウサギ", "義理", "利子"););
みたいになのを
両方に対応できるように_T("")とかTEXT("")とかを使って書くにはどうしたらいいんでしょうか?
Re: Win32 api のプログラムについて質問があります
TEXTマクロや_Tマクロは,文字列単位で使います。SantaxPro さんが書きました:str[3][10] = ("林檎","ゴリラ","ラッパ"
"パンツ", "釣り", "リンパ球"
"ウサギ", "義理", "利子");
を
static LPCTSTR str[3][10] = TEXT("林檎","ゴリラ","ラッパ"
"パンツ", "釣り", "リンパ球"
"ウサギ", "義理", "利子"););
みたいになのを
両方に対応できるように_T("")とかTEXT("")とかを使って書くにはどうしたらいいんでしょうか?
つまり,のように使う必要があります。
Re: Win32 api のプログラムについて質問があります
また返信遅くなってすみません
理解できましたありがとうございました
理解できましたありがとうございました