エディットボックスから文字を取り込みます。
エディットボックスの文字は2文字です。
GetWindowText(hText, str, 2);
と
GetWindowText(hText, str, 3);
とどっちにするべきですか?
TCHAR str[3]
GetWindowText(hText, str, 3);
とすればエディットボックスの内容がどんなに長くても、
ヌル文字を含めて3文字分だけstrにコピーされます。
↓MSDN の GetWindowText の説明にちゃんと書いてありますよ。以下引用です。
nMaxCount
lpString パラメータがポイントするバッファの長さを指定します (終端の NULL 文字
を含む) 。
テキストがバッファに入り切らないときは、切り捨てられます。
>GetWindowText(hText, str, 3);
エディットボックスの3バイト目にaあのように全角の2バイト目があると
str[0] = 0x61 ('a')
str[1] = 0x82 (あの1バイト目)
str[2] = 0x00 ('\0')
というように尻切れになって、あの2バイト目(0xa0)が入りません。
>エディットボックスの文字は2文字です。
ということは全角を考慮して5バイトに...。
念のため補足しておきます。
前の私の書き込みで3文字というのは TCHAR 3つ分ということです。
# あえてバイトと書かなかったのは TCHAR が WCHAR の場合を考えてです。
全角のことまで考えて下さってありがとうございます。
\0のことが知りたかったんだけど、\0の分も含めてのバイト数を
GetWindowTextの引数にしないといけなかったんですね。
strは数字だから、
GetWindowText(hText, str, 3);
にしました。
ありがとうございました。