エディットボックスの改行回数の上限は?


素人  2004-12-23 10:27:38  No: 55782

エディットボックスに数値を改行しながら表示するようにしていたら、途中から数値が途切れ、表示されてない状態になってしまいました。C++のダイアログベースに配置できるエディットボックスには改行回数に上限があるのでしょうか?またその上限を広げたり、設定しなおすことはできるのでしょうか?どなたか早急にお教えください。よろしくお願いいたします。


シャノン  2004-12-23 13:41:24  No: 55783

改行回数に上限は無いと思いますが、表示できる文字数には上限があります。
デフォルトでは 32,767 文字が上限です。
EM_LIMITTEXT メッセージで、上限を変えることが出来ますが、限度があります。
OS にもよりますが、Win9x 系では 65,536 文字、NT 系では 4,294,967,296 文字が上限です。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/em_limittext.asp

注意1:ハンドルネームはもう少し考えてつけましょう。
注意2:「早急に教えてください」は嫌われます。
注意3:環境は必ず書きましょう。


素人  2004-12-23 19:53:18  No: 55784

返信ありがとうございます。ご指摘の件、今後注意していきます。表示できる文字数に制限があるということは、改行しながら文字を表示している場合は制限を受けることになりますね。このまま質問を続けていいのかわかりませんが、\r\nも文字数に含まれますよね?あと改行した場合に空いた行は文字数に含まれませんよね?よろしくお願いいたします。


RAPT  2004-12-23 20:01:59  No: 55785

ここで「文字数」と言った場合、UIでの見かけの文字数ではなく、
コードレベルでの文字数("ABC\n"なら4バイト、4文字)です。


シャノン  2004-12-24 01:31:58  No: 55786

> ここで「文字数」と言った場合、UIでの見かけの文字数ではなく、
> コードレベルでの文字数("ABC\n"なら4バイト、4文字)です。

補足すると、「バイト数」ではありません。
リンク先には
> Specifies the maximum number of TCHARs the user can enter
と書かれています。
TCHAR がどういうものかは、調べてみてください。

> \r\nも文字数に含まれますよね?あと改行した場合に空いた行は
> 文字数に含まれませんよね?

答えは「両方とも含まれます」。
改行した文字列とは

一行目\r\n
二行目\r\n
\r\n
\r\n
\r\n
六行目\r\n

こういうものだと思いますが、この場合(Unicode でなければ)1行目8バイト、2行目8バイト、3〜5行目2バイト、6行目8バイトで、計30バイトになります。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加