XPで500KBのデータをEditBoxに表示できない

[戻る]
なつき 2002/07/02(火) 11:26:12
いつも参考にさせていただいています。
なつきといいます。

現在、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では何か制限事項があるのかと思い、
投稿させていただきました。

ご存知の方がいらっしゃいましたら、ご教授お願いいたします。
よろしくお願いいたします。

PATIO 2002/07/03(水) 11:47:14
解決法ではありませんけれど、
文字列を順に増やしながら表示テストを繰り返すプログラムを
作成して動かして見られてはどうでしょうか?
ある文字数から反応がなくなるようなら、
その可能性もありえるかと思うのですけれど。
その辺の情報も含めて質問されるともっとレスがつきやすいかと
思います。

なつき 2002/07/04(木) 11:57:03
なつきです。

リプライありがとうございます。

おっしゃられるように、
500KBのデータを1KBごとに表示させてみた結果、
42KBまでは表示されるのですが、43KBになると
表示されなくなりました。
1KB単位でテストをしたので、厳密には
何バイトめから表示されなくなるかはわからないのですが・・・。

やはり、文字数制限がありそうな感じでしょうか・・・。

dairygoods 2002/07/04(木) 12:09:55
XPがないので試せないのですが、
エディットボックスの文字数制限はどうなってますか?

CEdit edit;
int limit = edit.SendMessage(EM_GETLIMITTEXT); // 取得
edit.LimitText(50); // 設定

なつき 2002/07/04(木) 13:38:45
なつきです。

PATIOさん、dairygoodsさん、リプライありがとうございます。

dairygoodsさんがおっしゃられた方法で
XPでの制限文字数を取得したところ、
limit = 30000で返ってきました。
Win2000でも試したところ、同様に
limit = 30000で結果が返ってきました。

最初の投稿で、Win2000では表示されると書きましたが
500KBのデータが全て表示されているかは未確認です。
(ただ、エディットボックスに「aaaaaaaa....」と表示はされている)

ですので、XPの場合は、limitをオーバーすると
表示を一切せず、Win2000の場合は表示できる文字数だけ
表示しているのでは?と考えています。

 #EM_GETLIMITTEXTを使用して、エディットボックスの
 #制限文字数が取れるというのは知りませんでした。
 #大変、勉強になりました。
 #ありがとうございます。

dairygoods 2002/07/04(木) 14:43:38
そういえば、エディットボックスには、
Single-lineで32K、Multi-lineで64Kという制限があります。
それが影響しているのかもしれません。
http://msdn.microsoft.com/library/en-us/dnwui/html/msdn_editctls.asp

#文字数制限取得はGetLimitText()で出来ますね。見落としてました(^^;

なつき 2002/07/04(木) 15:34:52
なつきです。

ほんとですね。GetLimitText()関数がありました・・・。

 #実はこの関数は、貼り付けたエディットボックスの
 #長方形に表示できる最大文字数を求めるものだと思っていました(^_^;
 #ぜんぜん思い違いでした。

参考URLもありがとうございます!

古いスレッドには追加発言できません。