コンボボックスのエディットボックス部分に表示させるには?

[戻る]
ree 2001/10/12(金) 16:38:14
reeです。ちょっとわからないことがありますので教えてください。
下の例のようにコンボボックスに格納されている文字列をコンボボックスのエディットボックス部分に
表示していたのですが、コンボボックスに直接入力できないようにプロパティの[タイプ]
で「ドロップダウン」から「ドロップダウンリスト」に変更したところエディットボックス部分に
文字列が表示されなくなりました。
どなたかドロップダウンリストの設定でエディットボックス部分に文字列を表示する方法を教えてください。
よろしくお願いします。


//コンボボックス内の先頭の項目をエディットボックス部分に表示///////////////
CString Cmb1;
CComboBox* CMB1=(CComboBox*)GetDlgItem(IDC_COMBO1);    

CMB1->GetLBText(0,Cmb1);        // 先頭リスト項目文字列取得
CMB1->SetWindowText(Cmb1);        // エディットボックス部分に表示
////////////////////////////////////////////////////////////////////////

Hal 2001/10/12(金) 16:52:28
Halです。
SetCurSel()で設定してみてください。
それでは。

ree 2001/10/15(月) 00:01:05
Halさんどうもありがとうございました。
もうひとつ質問なのですが、同じ条件で(コンボボックスのタイプが「ドロップダウンリスト」)
エディットボックス部分に項目の番号で指定するのではなく、任意の文字列を指定してそれを
表示させるにはどうしたらよいのでしょう?
どなたかわかる方教えてください。宜しくお願いします。

CdS 2001/10/15(月) 00:21:27
「CComboBoxクラスメンバ」をMSDNで一通り眺めるくらいはしてください。
普通はなにかしら見つかるはずです。
なにかそういった努力というか最低限の調査を怠っているように思えてなりません。
失礼な言い方かもしれませんが、「この程度のこと」をいちいち聞いていては技術は向上しません。
どうしても分からないときは聞けばいいですが、自分で調べるということも必要です。
...違っていたら大変すいません。

回答としては、FindStringExactやFindStringで指定した文字列と一致する項目を持つインデックスを取得し、
SetCurSelすればいいです。

関数名だけを見ても、なんとなく分かりますよね...?

ree 2001/10/15(月) 18:30:50
[[解決]]
CdSさんのご指摘の通りです。申し訳ありませんでした。
機能の一部でコンボボックスの項目をほかのページで参照する・・・といったものを作っておりまして、
GetCurSel()を使って項目のインデックスを取得し、SetCurSel()していたのですが、
うまくいかずに、インデックスの値ではなく直接文字列を・・・と思い質問してしまいました。
原因は他の関数でインデックスの値を書き換えていたためでした。バグを修正したところ
GetCurSel()とSetCurSel()で期待値を取得できました。
どうもありがとうございました。

古いスレッドには追加発言できません。