• ベストアンサー

コンボボックス内の画像データを取得する

CComboBox m_combo; で宣言されたコンボボックスがあります。 そこに「picture a;picture b」と画像の名前が格納されています。 別に int pict; で宣言されていて picture aが指定されると pict = 0;  〃  b 〃     pict = 1; がpictに代入されるようにしました。 ここからが悩んでいて このpictから画像データを取得したい場合にはどうすればよいのでしょうか? ご教授の程よろしくお願いいたします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8508/19343)
回答No.1

CComboBoxのGetLBTextLenメンバ関数、GetLBTextメンバ関数を使う。 http://msdn.microsoft.com/ja-jp/library/zcy9kze7(VS.80).aspx まず「GetLBTextLen(0から始まる番号)」で、指定の番号の文字列の長さを得る。 文字列の長さを得たら、その長さ+1の長さの文字列格納領域を確保する。 文字列格納領域を確保したら「GetLBText(0から始まる番号,確保した文字列格納領域)」で、指定の番号のドロップダウン項目の文字列が得られる。 なお「文字列の最大長が決まっている」ならば、各項目の文字列の長さを得る必要は無く、単に char buf[文字列の最大長+1]; m_combo->GetLBText(pict,buf); で構わない。

doborn
質問者

お礼

お礼が遅れもうしわけございません。 解決することができました! ありがとうございます。

関連するQ&A

  • ボタンクリックでタブ内のピクチャコントロールに画像描画

    呼び出し元ダイアログ(A)と コンボボックスのあるダイアログ(B) そしてタブの中に入るダイアログ(C)があります。 それぞれのダイアログ内にあるものは以下のとおり A→ボタン1(IDC_BUTTON1)…Bを呼び出すためのもの   ボタン2(IDC_BUTTON2)…画像を呼び出すためのもの   タブ(IDC_TAB1)…Cが入るもの B→コンボボックス(IDC_COMBO1)…画像を選択するもの   ↓   dataは「picture1;picture2」   OK/CANCELボタン…略 C→ピクチャボックス(IDC_PICT1)…画像を表示させるためのもの プログラムでAのタブの中にCを入れるところを完成しました。 次に以下のようなことをやりたいのですが、どのように処理をしたらいいのかわかりません。 ボタン1を押す→Bが呼び出される→コンボボックスで画像を選択→ボタン2を押す→タブ内のピクチャボックスにコンボボックスで指定した画像が表示される。 というようにしたいです。 1つのダイアログ上で画像をピクチャボックスに表示するものはやったことがありますが、ダイアログを挟んでの表示はやったことがないためここ2日悩んでいます。 下手な説明かとは思いますがご教授の程よろしくお願いいたします。 ※コンボボックス変数→CComboBox m_combo; ピクチャボックス変数→CStatic m_picture;

  • コンボボックスにリストを表示させるには?

    VC++6.0でコンボボックスにリストを表示させようと思っているのですが プロパティのところのデータに追加しても表示されません ほかに設定するところはあるのでしょうか? もちろんコンボボックスは生きています。 他のhpをみて CComboBox* p = (CComboBox*)GetDlgItem(IDC_COMBO1); p->ResetContent(); p->AddString("項目2"); p->AddString("項目1"); p->AddString("項目4"); p->AddString("項目3"); も試してみたのですがうまくいきません。 よろしくお願いいたします。

  • 複数のコンボボックスの項目の表示/非表示について(VB6.0)

    コンボボックスにて Combo1(0)のリスト "A" "B" "C" Combo1(1)のリスト "A" "B" "C" Combo1(2)のリスト "A" "B" "C" Combo1(3)のリスト  ・  ・  ・ と複数のコンボボックスを用意し、それらのコンボボックスにおいて表示するの内容を全て同じ内容にします。この時、例えばCombo1(0)で"A"が選択されると、他のコンボボックスでは"A"がリストに表示されなくなる、またCombo1(0)にて"A"を選択解除すると他のコンボボックスにおいて再度"A"がリストに表示されるという様に、同じリストを持つ複数のコンボボックスにおいて、重複選択できないように表示/非表示を切り替えたいのですが上手い方法が思いつきません。分かる方がおられましたら御教授宜しくお願いします。

  • フレキシブルグリット コンボボックス

    いつもお世話になっております。 VB6.0を使用しています。 (1) コンボボックスを用いて従業員(10名)のリストから選べるようになっています。 質問なのですが,フレキシブルグリットのあるセルにコンボボックスを使用することはできませんか? (1,1)のセルに 10の氏名から1つ選んで 格納したいです。 以下のようにすればできるかと思ったのですができませんでした。 よろしく御願いします。 MSFlexGrid1.TextMatrix(1, 1) = Combo1.List(10)

  • コンボボックス

    コンボボックスを入力不可にする時なんですけど、 コンボボックスが配列で50個あるんですけど、 ウィンドウプロパティでStyle 2-ドロップダウンリストとするのは、大変めんどくさいので、プログラムでかいたんですけど、  for i = 0 to 50    combo1(i).style = 2  next i   と書いたら”値の取得のみ可能なプロパティに値を設定することはできません”っていうエラーがでるんですけど、プログラムではどう書いたらいいんですか?

  • コンボボックスの位置取得

    今エクセルのVBAでプログラムを組んでいます。 セルA1の位置にコンボボックスを配置して コンボボックスの矢印をクリックした時に コンボボックスの配置を取得したいのですが どうすればいいのでしょうか? 上記の例で言えば コンボボックスをクリックすると列、行 (1,1)を数字で取得するようにする。

  • 複数のコンボボックスをforなどで扱う方法

    VIsualC++6.0 SDI でプログラムの勉強をしています。 コンボボックス1 コンボボックス2 コンボボックス3   ・   ・ のようなダイアログボックスがあり、 コンボボックスについては、一個一個メンバ変数を割り当て、初期化をしています。 m_combo1.SetCurSel(0); m_combo2.SetCurSel(1); m_combo3.SetCurSel(2); これを、for(int i=0; i < n; i++){ のような繰り返し文を使って書にはどうやったらよいのでしょうか? また他に方法があったり、考え方が根本的に違っているようならご指摘ください。 一先ず、初期化は一個一個書いて終わらせたのですが、 実際の処理では、複数あるコンボボックスのデータを順々に送信する。 送信し終ったらまたコンボボックス1のデータを送信・・・。 と、ストップボタンを押してスレッドを抜けるまで送信し続けると言う処理をさせたいのですが、 初期化のように出来ないため、質問させて頂きました。 よろしくお願いします。

  • コンボボックスの連動

    こんにちは! 今回もVBAで分からないことがあったため、質問させて頂きます。 Excelは2003を使用しています。 画像のようなデータが、A1:D?まであったとします。 A列、B列、C列などの重複しないデータをプログラムを用いて 同じシート内(例として、「管理」シートとします。)に記載しています。 そのデータをコンボボックス上に表示することはできました。 そして、次にコンボボックス上に表示されたデータを選択した際に、 フィルターで絞込みをするように設定しています。 (図の例でいくと、りんごで絞込み) 「りんご」で絞込みをかけた際に、実際のリスト上にある 重複しないデータをコンボボックスに入れなおしたい?です。 重複しないデータの抽出方法が悪いとは思うのですが、 可視セル(指定列)の重複しないものを書くことはできるのでしょうか? たぶん、重複しないデータを抽出する際の 範囲指定が悪いと思います。 色々書いてわからなくなったため、 やりたいことをまとめさせて頂きます。 ●コンボボックスを押した際にフィルター絞込み(これは出来てます) ●絞り込んだ後、その他の列の重複しないデータをコンボボックスに入れなおす あと別途、 ●可視セル(タイトル行を除く)の範囲選択&データ取得方法(重複しないデータ取得も) ●フィルターをかけた際に、絞込み結果が0(空白)の場合、メッセージボックスを表示 情報不足かもしれませんが、回答よろしくお願い致します。 EndLineは、A1から下に下がった行番号を格納しています。(例)9 ---------------------------------------------- On Error Resume Next 'データを登録する間、エラーを無視する For i = 2 To EndLine '最終行までチェック Mydata.Add Range("B" & i).Value, Range("B" & i).Value '名前の列の重複確認 Next i On Error GoTo 0 '重複していないデータがMydataに格納されていく For Each A In Mydata 'Mydataの内容をセルに書き出す。 Worksheets("管理").Cells(i, ROW_NUMBER).Value = A i = i + 1 Next A End Function ------------------------------------------------- Function Combo_KOUSIN() 'コンボボックスのデータ更新 Dim EndLine As Long Dim i As Long ComboBox1.Clear EndLine = EndCheck("F") ' ”F” 列の行数抽出 For i = 1 To EndLine ComboBox1.AddItem Range("F" & i).Value Next 上と同様に、combobox2,3,4も行う。 F列、G列、H列、I列などに重複しないデータがあります。 それを取得して、ComboBoxに格納します。

  • コンボボックス

    コンボボックスから選択した内容によってそれに関するコンボボックスの内容を変えたいと思っています。 例えば コンボボックスA 書類1  分類a 書類2  分類a 書類3  分類b 書類4  分類c コンボボックスB 提出先1  分類a 提出先2  分類b 提出先3  分類b 提出先4  分類c と言う風になっているのですが、 コンボボックスAの書類1を選択したらコンボボックスB と共通の分類の提出先名がコンボボックスに表示したいのです。 書類3を選択すると、コンボボックスBには提出先2、提出先3が表示されるといった感じです。 ACCESS2000を使用しています。 よろしくお願いします。

  • コンボボックスの連動

    コンボボックスの連動を実現したいです。 コンボボックスがAとBの2個あります。 Aにメーカーをセット 例) 1 エプソン 2 キャノン 3 HP Bに機種名をセット 例)Aでエプソンを選択したとき 1 EPシリーズ 2 PMシリーズ 例)Aでキャノンを選択したとき 1 PIXUSシリーズ 2 Sateraシリーズ コンボボックスAの選択内容により コンボボックスBの内容を変更したいです。 各A,Bの選択した値(1、2)も取得したいです。 よろしくお願いします。