いつも参考にさせていただいています。
なつきといいます。
現在、Win2000/ VC++6.0 sp5 MFCを使用して
EditBoxに500KBの文字列を表示させようとしています。
=======================================
CString szData; //500KBのデータが入っている
CEdit m_edit_data; //editボックス
m_edit_data.SetWindowText(szData);
=======================================
このようにした場合、Win2000では表示されるですが
XPでは、空欄のままで、何も表示されません。
表示に時間がかかるのかとも思い、
20分ほど待ってみたのですが表示されませんでした。
また、コントロールの変数をCStringに変更し、
UpdateData(FALSE)としても、空欄のままでした。
こちらも、Win2000では表示されます。
Win2000では表示されているので、
XPでは何か制限事項があるのかと思い、
投稿させていただきました。
ご存知の方がいらっしゃいましたら、ご教授お願いいたします。
よろしくお願いいたします。
解決法ではありませんけれど、
文字列を順に増やしながら表示テストを繰り返すプログラムを
作成して動かして見られてはどうでしょうか?
ある文字数から反応がなくなるようなら、
その可能性もありえるかと思うのですけれど。
その辺の情報も含めて質問されるともっとレスがつきやすいかと
思います。
なつきです。
リプライありがとうございます。
おっしゃられるように、
500KBのデータを1KBごとに表示させてみた結果、
42KBまでは表示されるのですが、43KBになると
表示されなくなりました。
1KB単位でテストをしたので、厳密には
何バイトめから表示されなくなるかはわからないのですが・・・。
やはり、文字数制限がありそうな感じでしょうか・・・。
XPがないので試せないのですが、
エディットボックスの文字数制限はどうなってますか?
CEdit edit;
int limit = edit.SendMessage(EM_GETLIMITTEXT); // 取得
edit.LimitText(50); // 設定
なつきです。
PATIOさん、dairygoodsさん、リプライありがとうございます。
dairygoodsさんがおっしゃられた方法で
XPでの制限文字数を取得したところ、
limit = 30000で返ってきました。
Win2000でも試したところ、同様に
limit = 30000で結果が返ってきました。
最初の投稿で、Win2000では表示されると書きましたが
500KBのデータが全て表示されているかは未確認です。
(ただ、エディットボックスに「aaaaaaaa....」と表示はされている)
ですので、XPの場合は、limitをオーバーすると
表示を一切せず、Win2000の場合は表示できる文字数だけ
表示しているのでは?と考えています。
#EM_GETLIMITTEXTを使用して、エディットボックスの
#制限文字数が取れるというのは知りませんでした。
#大変、勉強になりました。
#ありがとうございます。
そういえば、エディットボックスには、
Single-lineで32K、Multi-lineで64Kという制限があります。
それが影響しているのかもしれません。
http://msdn.microsoft.com/library/en-us/dnwui/html/msdn_editctls.asp
#文字数制限取得はGetLimitText()で出来ますね。見落としてました(^^;
なつきです。
ほんとですね。GetLimitText()関数がありました・・・。
#実はこの関数は、貼り付けたエディットボックスの
#長方形に表示できる最大文字数を求めるものだと思っていました(^_^;
#ぜんぜん思い違いでした。
参考URLもありがとうございます!