環境OSはWindows2000を使用しています。メモリは128MBです。
言語はVB6.0SP5です。
この環境で1つプロジェクトを作成してるのですが、VBのユーザーコントロールを使用して画面を作成しフォームに貼り付けをして作成してます。このユーザーコントロールを5つぐらい作成しフォームに貼り付けています。この環境ではうまくいくのですが、このソースをFDにおとして、この環境でなくOSが98SEでメモリが320MBで言語も同じVB6.0SP5の環境にもっていくとメモリ不足になってしまいます。 どうやらユーザーコントロールで貼り付けた枚数5枚ほどあるのですが、その2つぐらいがメモリ不足で開けなくなっているようなのです。しかしメモリは前者の環境よりもつんでるので問題がないとおもうのですがOSに左右されてるのでしょうか?ちなにOSをXPの時で128MBでも動作はきちんとします。なんだか98系のOSだとメモリ不足とでてしまいユーザーコントロールが3枚ほどしかはりつけられません。なぜなのでしょうか?
ちなみにユーザーコントロールの中身はテキストボックスなどが50個ぐらいおいてありそのデータ入力をクラスモジュールと使用してProperty Set, Letを使用してデータの格納をしてるだけなのですが。。。何か問題があるのでししょうか?
宜しくお願いします。すごく困っています。納期が迫っておりすいません。力を貸してください。
恐らくGDIリソースあたりが不足しているのでしょう。
95系のOSでは,GDIリソースは64KBしかありませんから,
できるだけコントロールの数を減らす必要があります。
NT系のOSでは,GDIリソースにそのような制限はありません。
実際に利用可能なメモリに依存します。
テキストボックス50個ですか…多いですね。
配列にしてみてはいかがでしょう?
9x系OSに320MBのメモリを搭載しても無駄です。
いくら搭載しても、利用できるメモリ空間が限られているので…。
掲示板をお伺いしました。
kidoです。
メモリ不足の件ですが、やはり98系はそういう問題があるのですね。
64kBというとほとんどコントロールが使えませんね。
これだとたとえコントロールを配列にしても同じことですね。
これではVBのAcitveコントロールってあまり使えないですよね?
1つのプロジェクトに自分で作成した画面のOCX(コンポーネント)は数が限られますよね?
今回はたまたまOCXでなくソース上でフォームモジュールと標準モジュールとユーザコントロールなど1つにした
形で作成したので同じことですよね。OCXにしても?
あれからいろんな掲示板とかみたりしたんですけど、NT系と98系ではこのあたりが
ちがうのですね。これはOSに依存されてしまうということですよね?
これはバグなんですか?これはプログラムを組む上での常識てきなことなのでしょうか?
とりあえず,GDIリソースというのは,コントロールとは直接関係ありません。
例えばラベルコントロールを大量に使っても,ウィンドウを持たないのでリソースを消費しません。
#フォントやらブラシやらはどうなっているのか知りませんが。
テキストボックスを250個も使えば,まぁ使い切る可能性は高いですね。
本当にそんなにテキストボックスが必要かUIを見直すのがよいかと思います。
>これはバグなんですか?これはプログラムを組む上での常識てきなことなのでしょうか?
仕様ですね。それも相当有名な。
C言語でAPIを使っていると,GDIが16bitで組まれていることはヘルプの端々に出てきますので。
#昔,それを知らずにTextOutでえらい目に遭った……。
風来坊さん、YuOさんありがとうございます。YuOさんにはメールを直接送り不愉快な気分にさせたことをお詫びを申し上げます。m(_ _)m
あれからいろいろ調べ理解をしました。
テキストボックス250個も貼り付けたUIなんてのはナンセンスというのは、自分でもすごく分かっています。これにはいろいろ事情がありまして。。。
自分はNT系でずっと使用していたため、9X系にはちょっとわからなすぎました。
いろいろありがとうございました。