コンボBOXの選択された文字をエディットBOXに表示

[戻る]
そら 2006/10/28(土) 22:19:39
XP VS2005 MFCです。 
void CcmbDlg::OnCbnSelchangeCombo1()
{
    // TODO: ここにコントロール通知ハンドラ コードを追加します。
    CString cs1;
    combo1.GetWindowText(cs1);
    ed1.SetWindowTextA(cs1);
}    

上記でエディットボックスに表示はできますが
表示が一つ前で選択されたデータになってしまいます。

1.コンボボックスクリック
2.表示されている"B"選択
3.ボックスを閉じる→エディットボックスにAと表示
4.コンボボックスクリック
5.表示されている"C"選択
6.ボックスを閉じる→エディットボックスBと表示

のようにひとつ前の選択されたデータが表示されてしまいます。
どなたかご存知の方がございましたら教えてください。

Blue 2006/10/28(土) 23:06:51
イベント発生のタイミングでしょうかね。
CBN_SELCHANGイベントが起きた時点ではComboBoxのWindowText(エディットのところ)
はまだ反映されていません。

ですので、GetWindowTextで取得せず、GetCurSelからリストの何番目を選択したのか取
得し、GetLBTextでその文字列を取得するようにします。

void CcombotestDlg::OnCbnSelchangeCombo1()
{
    // TODO: ここにコントロール通知ハンドラ コードを追加します。
    CString cs1;
    const int index = combo1.GetCurSel();
    combo1.GetLBText(index, cs1);
    ed1.SetWindowText(cs1);}

そら 2006/10/28(土) 23:21:33
[[解決]]
Blueさん親切に有難うございます。

見事解決しました。

そら 2006/10/28(土) 23:21:34
[[解決]]
Blueさん親切に有難うございます。

見事解決しました。

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