2012-03-29 7 views
0

私は最初の行には「A」を示している4行を表示するコンボボックスを探して、2行目は、「b」を示しています...「C」...「D」CComboBoxの選択項目を一度にCString配列にする方法は?

cb1 = new CComboBox; 
cb1->Create(WS_VSCROLL | CBS_DROPDOWN | WS_VISIBLE | WS_BORDER, CRect(20,200,200, 300), this, 30); 

CString itemSet[] = {"a","b","c","d"}; 


//I am to set the array all at once with out doing each itme ?? 
cb1.AddString(itemSet); //fails 
+0

質問はあまり明確ではありません。 {a、b、c、d}、または{m、n、o、p}の間で選択できるように、さまざまなオプションが必要ですか? – MikMik

+0

私は簡単にするために変更を加えました – jdl

答えて

0

これを行う機能はありません。あなたはJeevaとして行うことができ、あなたの配列を横断単純なループ勧め:あなたは、多くの場合、それを使用しようとしている場合は、あなたがあなた自身のCCombobox派生クラスを作成し、それをしない機能を追加することができ、しかし

CString itemSet[] = {"a","b","c","d"}; 
for (int i = 0; i < _countof(itemSet); ++i) 
{ 
    cb1.AddString(itemSet[i]); 
} 

を。

class CMyCombo : public CCombobox 
{ 
public: 
    CMyCombo(); 
    void AddStrings(const CString* strings, int num); 

    // ... 
} 


void CMyCombo::AddStrings(const CString* strings, int num) 
{ 
    for (int i = 0; i < num; ++i) 
    { 
     cb1.AddString(strings[i]); 
    } 
} 

実は、私はおそらく、このようなstd::vectorCStringArrayとして、コンテナを使用しますが、あなたのアイデアを得ます。

ところで、ローカライズできる文字列を使用している場合は、文字列のみに頼るべきではありません。より良いアプローチはhereです。

最後に1つのこと:通常、コントロールをオンザフライで作成する必要はありません。通常、メンバー変数を作成する方が簡単です。

0

はこのような何かを

CString arr[2] = {_T("A"),_T("B")}; 

    for(int i =0 ;i <2; i++) 
    { 
     m_ctrlCombo.AddString(arr[i]); 
    } 
関連する問題