- ベストアンサー
VCのコントロール最大配置数は?
Visual C++ 6.0において、SDIの画面上に大量のコントロールを配置したいのですが、単純には255ヶが最大値のようで、それ以上配置することができません。実際には約1100ヶ配置したいのですが、良い案はないでしょうか。 なおこれらのコントロールは「ボタン 兼 状態表示ランプ」なので、全てを同時に表示する必要があります。(タブ等による分割表示はNGです。) 否定的ご意見でも結構です。アドバイスをよろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 > #3 のご回答と整合しないようですが、より具体的な説明をご教示いただけないでしょうか。 参考URLなどをどうぞ。 なお、仮に実現手段があったとしても、仕様に無理があることに変わりはありません。#3のかたのご意見には私も同意します。提示しているのは歪な仕様のしわ寄せを受けた場合の技術的なお話に過ぎません。 >>私ならボタン兼ランプのように見える絵を描きます。 >ご指摘の方法で、実現可能なのでしょうか? これも可能です。 別にボタンでなくてもウィンドウへの自力描画は可能ですしマウスのクリックも座標も判断できますし。 特に、 > 現状は、ランプを模擬した1089ヶの表示のみで、ボタン機能がありません。 既にこの機能があって、ボタン位置がクリックできればよいだけ(押し下げとかの見た目を気にしない)ならもっと簡単。 クリックを検知してその位置の処理を呼び出せばいいだけの話です。 > 実現性は不明ですが、1つのコントロールに複数のボタン機能を割り当てることは可能でしょうか? 結局、オーナドロー/カスタムドローなどが必要になるので、ここまでしてコントロールにこだわる意味がありません。 ウィンドウに直接ボタンっぽい絵を描画するのと大差ない。 #2のかたが書かれているのは、そういうことです。
その他の回答 (4)
- taranrappu
- ベストアンサー率64% (16/25)
No.2の者です。 何しろ数が多いので コントロールにすることにこだわらずに 大きな1枚絵の中を33*33分割して GDI系のAPIで絵を描くことで状態表示ランプは実現できますよね。 また、ボタンコントロールでなくとも マウスカーソルのイベントと カーソルの座標を拾うことで あたかもそこにボタンがあるかのような絵を描いてあげれば コントロールは1つだけで済むかと。 フォームのクライアント領域に直接描画すれば コントロールすら不要。 速度重視ならDirectXを使ってはどうでしょう? 私も以前同じように制御系アプリを作っていて 監視画面を作ったことがあるのですが その時は同じ手法をとりました。 コントロールを配置した方が イベント処理が楽ですし ボタン押下などの見た目の作りこみも不要で楽なのですが 数に対応するためには こちらのアプローチの方も一つの解かと。 参考までに。
お礼
具体的な御回答をありがとうございました。 お陰様で解決できそうな気がしてきました。
- FAY
- ベストアンサー率49% (95/193)
>実際には約1100ヶ配置したいのですが 仕様に無理があります。 >ボタン 兼 状態表示ランプ のところから考え直すべきだと思います。 詳細が分からないのでこれくらいしかいえないのですが。
補足
ご回答ありがとうございます。 #1と#2の補足もご覧になって下さい。 VC6の制約を無視すると、アプリ仕様そのものは やむを得ない状況です。 実現性は不明ですが、1つのコントロールに複数のボタン機能を割り当てることは可能でしょうか? 例えば、本来は1行分で33ヶのコントロールを割り当てるところを、16ヶ分のボタン機能を持たせた1つのコントロールと、17ヶ分のボタン機能を持たせた1つのコントロールで賄います。こんなことができれば、33×2=66ヶのコントロールで済むかと。。。 よりよいアドバイスをお願いいたします。
- taranrappu
- ベストアンサー率64% (16/25)
こんにちは。 制御系のアプリか何かでしょうか。 想像しかできないのですが 私ならボタン兼ランプのように見える絵を描きます。
補足
回答ありがとうございます。 ご想像通り、制御系アプリです。 33行×33列で総計1089ヶのマトリクス状に コントロールを配置します。 現状は、ランプを模擬した1089ヶの表示のみで、ボタン機能がありません。 >私ならボタン兼ランプのように見える絵を描きます。 ご指摘の方法で、実現可能なのでしょうか?
- MrBan
- ベストアンサー率53% (331/615)
VC6だと、リソースエディタに数の制限があったと思います。 直接リソースファイル(テキスト)を編集するなり、 動的にCreateするなりで表示できるのでは?
補足
ご回答ありがとうございます。 #3のご回答と整合しないようですが、より具体的な説明をご教示いただけないでしょうか。 ※当方、VC6は超初心者で、今回のアプリは外注開発です。
お礼
具体的な御回答をありがとうございました。 リソースエディタによる方法も試してみたいと思います。