• ベストアンサー

VisualC++でコントロール配列

 Visual C++において、VBのコントロール配列のような事をすることはできるのでしょうか?  たとえば、VBでコントロールをコピーアンドペーストして10個作った際、コントロールは  Control(1).Caption="どうのこうの"  として扱うことができますよね。  このようなまるで配列(?)のような機能は、VC++では使えるのでしょうか?  もし使えるのでしたら、どのように使えばいいのでしょうか?教えてください。

noname#129397
noname#129397

質問者が選んだベストアンサー

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

コントロール配列そのものはありませんが、工夫次第で近いことはできます。

参考URL:
http://search.acty-net.ne.jp/mfc_search/archive/1998-1/msg03255.html

その他の回答 (1)

  • darksky
  • ベストアンサー率66% (38/57)
回答No.1

VCではコントロール配列はサポートされていません。 同様な処理をするには、GetWindow関数を使用して、子ウィンドウを列挙するしかないでしょう。 最初の子ウィンドウをGW_CHILDで取得して、GW_HWNDNEXTで子ウィンドウの最後まで取得できます。 直接、任意の子ウィンドウにアクセスするには、GetDlgItem関数を使用して、ウィンドウのハンドルを取得して、操作します。

関連するQ&A

  • VBAでコントロール配列を持つことは可能ですか?

    Excel2002、OSはXPです。 VBではコントロールに配列を持つことが出来ましたが、 VBAでコントロール配列を持つことは可能でしょうか? やりたいことはユーザーフォームにラベルを100個ぐらい貼り付けて、 テキストボックス入力した値がCell(i,1)と等しければ、 i番目のラベルのCaptionに文字を入力したい。という感じです。 もしVBのようにコントロール配列を持てれば、 If TextBox1.text=Cells(i,1) Then Label(i).Caption="~~" という風に出来るのですが、どうも配列の設定がVBのようにできません。 プロパティにINDEXが無いですし、オブジェクト名を同じにしたら エラーとなってしまいますし。。 もし出来ないのであれば、何か回避策のようなものはないでしょうか? 力技で100個IFを書けば出来ることは出来るのですが・・ If TextBox1.text=Cells(i,1) Then If i = 1 Then Label1.Caption="~~" ElseIf i=2 then Label2.Caption="~~" ・・・・

  • 配列化

    VB2005においてlabel,textboxといったコントロールを配列化したいのですがどうすればいいでしょうか? VB6では下記のコードが成り立ちますが・・・ For i=0 to 3 label(i).caption = str(i) Next このようにコントロール自体を配列化することは出来るのでしょうか?

  • コントロールが配列かどうかを知るには?

    Visual Basic6.0(SP5)で伺いたいことがあります。 フォーム上の全てのオブジェクトを For Each文で取得しています。以下の様にです。 Dim Control As Object For Each Control In Form1.Controls If TypeOf Control Is Text Then End If Next Control このとき個々のControlがコントロール配列かどうかを知りたいのですが、どうすればよろしいでしょうか?フォーム上にはコントロール配列のオブジェクトも、コントロール配列ではないオブジェクトもあります。 Control.Indexの値を参照しようとしても、コントロール配列でない場合は 「配列ではないオブジェクトです」とエラーになります。 IsArray関数でもFalseになってしまいます。 何を行いたいかというと、そのControlがコントロール配列(Text1(0)とかText1(1)とか)かどうかを調べて、そのIndexをある関数の引数にしたいのです。全てコントロール配列だったら、Control.Indexで値を取得できるのですが。 よろしくお願いします。

  • コントロール配列の多次元配列

    http://dobon.net/vb/dotnet/control/buttonarray.html のサイト内の、「"特定の名前" + "1から連続する数字"」という名前を持つコントロールを配列にするメソッドを使用してのコントロール配列の多次元配列の方法はどのようにすれば良いでしょう?今現在調べている最中ですがよくわかりません。よろしくお願いいたします。

  • vb2008 コントロール配列

    VB6からVB2008へ移行を検討しているものです。 そこで質問なんですが、VB2008でコントロールの反復処理はどう処理すればいいのでしょうか? VB6の時はコントロール配列を使用して、ForNextで繰り返せばそれらしいことはできました。VB2008はコントロール配列がサポートされていないのでどうすればいいかわかりません。みなさんはどう反復処理を行っているのか教えていただきたいと思います。 具体的な処理として、テキストボックス1~10があり、そのテキストボックスの内容を1~10の順番で、テキストボックス11~20に格納する。以上、宜しくお願いします。

  • VCでのFrame(VB6)は?

    お世話になります VB6のFrameコントロールの様に、フレームの枠にタイトルを付けたいのですが。 VC(visual studio 2010)の場合どのコントロールを使えばよろしいのでしょうか? Panelかな?と思い配置したのですが、Caption(VB6)に該当するTextが無いようなのですが。

  • Delphiでのコントロールの配列について

    Delphi6.0を使用しているのですが、コントロールの配列は出来ないのでしょうか? Visual BasicではコントロールにIndexを指定することでコントロール配列を取り扱っていましたが、Delphiでの方法がわかりません。 実現したいことは、ウィンドウサイズ変更によってその内部の約50近いコントロールのサイズを均一のサイズに変更したいのです。 上手く伝わっているかどうかわかりませんが、御回答宜しくお願い致します。

  • コントロール配列(,net)

     VB.NET でコントロール配列が出来きません。 ヘルプによるとサポートはしていない~~~といろいろ書いていますがいまいち理解できません。 いったいどういうことなんでしょうか?

  • VB2005におけるコントロール配列

    VB2005でフォーム上にTextBoxがいくつかあるとしますと、そのTextBoxをコントロール配列のようにしたいのですがどのようにすればよいのかわかりません。調べてみたのですがわからなかったのでお力をお貸しください。よろしくお願いいたします。

  • VBで言うところのコントロール配列をするには?

    VBScriptを使って、VBで言うところのコントロール配列を作成することは可能でしょうか? Command1(0)、Command1(1)というようなものを作りたいのですが... 今回、ASPを初めて使うのでよくわかりません。 よろしくおねがいします。