vc++6.0でダイアログにコントロールを貼り付けていたのですが、一定の数以上になると、
コントロールが貼り付けられなくなるようなのですが、どうしてでしょうか?
どこかにそのような制限を設定できるところがあるのでしょうか?
また、コントロールを設定できる数を確認する方法はあるのでしょうか?
別掲示板ですが、こんな感じで使えるのは255個なのかな?
貼り付けられる数と実際に実装できる数には差があるかもしれません
http://forums.belution.com/ja/vc/000/055/85.shtml
タブコントロールを使う等して、ユーザの負担を減らしましょう
VC.NETで試してみたところ、
リソースファイルを直接編集すれば、255個以上配置できるようです。
その後、リソースエディタで表示して編集することもできます。
しかし、その前にコントロール数を減らす工夫をすべきでしょう。
皆さんおっしゃることは同じようですね。
リソースエディタで追加が出来ないくらいコントロールを貼っている時点で
GUIのデザイン的にはアウトだと思った方が良いでしょうね。
一つの画面に山のようなコントロールを貼られてもユーザーは混乱するだけで
操作性は最悪になるでしょう。
すでにkuさんが指摘されているようにどうしても一つのウインドウにしたのであれば、
タブコントロールを使ったインターフェイスを検討すべきだと思います。
>すでにkuさんが指摘されているようにどうしても一つのウインドウにしたのであれ
ば、
>タブコントロールを使ったインターフェイスを検討すべきだと思います。
タブコントロールを使っても1画面あたりのコントロール数が減るだけで、利用可能な
コントロールの絶対数が増えるわけではありませんので、直接的な解決にはならないと
思います。
単純に、使用するコントロールの絶対数を減らすように設計しなおすべきです。
> タブコントロールを使っても1画面あたりのコントロール数が減るだけで、利用可能
な
> コントロールの絶対数が増えるわけではありませんので、直接的な解決にはならない
と
> 思います。
タブ1画面につき1つのダイアログを貼り付ける方法なら大丈夫なのでは?
実際に
ダイアログ(タブあり)-ページ1ダイアログ(コントロール数25x個)
-ページ2ダイアログ(コントロール数25x個)
-ページ3ダイアログ(コントロール数25x個)
とやって見たら表示できました。ただ、25x個が表示できる制限かどうかはわかりま
せんけど
> 単純に、使用するコントロールの絶対数を減らすように設計しなおすべきです。
ごもっとも
>タブ1画面につき1つのダイアログを貼り付ける方法なら大丈夫なのでは?
ページ1~3に相当するダイアログのインスタンスが同時に生成されるのであれば、全
体としてコントロールは100個(25x3=100)作られるので、大丈夫でないよ
うな気がします。
それとも、ページ切り替えのたびにダイアログを生成・廃棄します???
私は、そんな面倒なコードを書くのはイヤだな。
> ページ1~3に相当するダイアログのインスタンスが同時に生成される
> のであれば、全
> 体としてコントロールは100個(25x3=100)作られるので、
> 大丈夫でないよ
> うな気がします。
コントロール数255個という制限は、
VCのリソースエディタでの話で、
実際にはリソースのある限り生成可能です。
> それとも、ページ切り替えのたびにダイアログを生成・廃棄します???
それは無いです
こうゆうやりかた
http://www.asahi-net.or.jp/~yy6m-wd/kuma/vctip/tabctrl.htm
実はあまり使わないんで、どうゆうのが普通なのか知らないんですが(^^;
良いところはリソースエディタでページ毎に作れるので
本来なら重なるコントロールも設計しやすいということでしょうか
正確にはこの方法だとタブキーの移動で不整合が生じるんですよね
これをまじめにやるコードは、それなりに情けないコードになるですが
少なくとも、前の発言は250x3以上はやりましたから
計750個以上ですね
(25xは正確に分からなかったので250~255くらいの意味でした
ゴメンなさい)
> コントロール数255個という制限は、
よほどの事が無い限りこんなにコントロールは貼り付けないので
上限なんて知らなくて当然かも
250個くらいのボタンを貼り付けてみましたが、
どのコントロールにしろ見栄え良く貼るのは難しいかなと思います
>> それとも、ページ切り替えのたびにダイアログを生成・廃棄します???
>それは無いです
>こうゆうやりかた
これは、↑の方にある「VC++ のリソースエディタの限界(フォーム上のコントロール数
は255個まで?)」を超えるのには有効ですが、利用可能なコントロール数の上限は
まだ他にもあります。
Windows 9x 系OSでは、16bit Windows 時代の機構を内部に残しているので、GDI リソ
ースは、常に残り要領に気を配っておかなければならないくらい既定量の少ない、有限
の資源なのです。
しかも、プロセス毎ではなく、システム全体で1つのプールを共有する仕組みなので、
他アプリケーションの起動状態によって、利用可能なリソース量は変化します。
↑の例のように「VC++ のリソースエディタの限界」を超えたとしても、ページ数が4ペ
ージ、5ページ。。。とエスカレートしていくと、やはりどこかで破綻します。
てか、1フォームに250個のコントロールを載せたとすると、2、3ページで限界か
もしれません。
私も渋木さんの意見と同じですね。
最近は、ハードウエア側の環境が格段に良くなったために
この辺のことに気を使わない設計が多いような気がします。
システムリソースが少なかったころは、いかに小さくまとめて
なおかつ使いやすくするかが勝負だったんですけれど。
いくらタブを使ったとしてもタブの数が膨大だとか、一つのタブに
山のようにコントロールが張り付いているアプリは使う気が失せます。
基本的にはコントロールをなるべく少なくするように努力した上で
減らせない部分をタブによって切り替えるというのが本筋でしょう。
タブ以外にもダイアログの設計をうまくやれば、
方法はあると思いますよ。
アプリを使っていてこのインターフェイスは良く出来てるなぁと
思う事も良くありますから。
しかし、このスレッドを立てた本人はこれを読んでいるんでしょうか?
発言が無いみたいですけれど。