コンボボックスで自分で文字を入れた時とリストより選んだ際に
ほかのコンボボックスの表示も変えるといったプログラムを作成しています。
EditchangeとSelchangeに連動処理を入れているのですが
一度目にリストより選んだ際にイベントが入ってきてくれません。
(2度選ぶと入ってくる)
一度選んだだけでイベントが入ってくるようにするにはどうすればいいのでしょうか?
私の環境では、1度目に来ますけど。
起動後、▼であらかじめ設定してあるデータから1項目を選ぶと
ChogeDlg::OnSelchangeCombo1()内に飛んできました。
(コンボのスタイルはドロップダウンにして確認しました。)
説明が足りなくて申し訳ありません。
確かに入ってくるのですが、まだコンボボックスのテキスト部分が
変更されていない状態で入ってきてしまうために、
うまい具合に連動ができなかったようです。
テキスト変更後に取得できるイベント等ありましたらお教えください。
OnEditupdateCombo1()
とか
OnEditchangeCombo1()
ではまずいのでしょうか?
HELPを読まれましたか?
ヘルプも読みましたし、質問する前にOnEditupdateもOnEditchangeもやってみましたが
どうもリストより選択した際には入ってこないようです。
どういうことをやったら、うまくいかないのか、何をしたいのか
良く理解できないのですけど。ゴメンナサイ。
もう少し詳しく教えてもらえますか?
説明が足りなくて申し訳ありません。
たとえばコンボボックスにAとBというリストがあったとします。
今Aが表示されていて、Bをリストより選択した際に
OnSelchangeイベントが入ってきて、
イベント内でGetWindowTextより、コンボボックスのテキストを取得すると
Bが入ってくるわけではなく、Aが入ってきてしまうので困っているわけです。
私の考えではBをリストより選んだ際にテキストの内容が変更される前に
OnselChangeイベントが入ってきてしまうのでうまくいってないんだと思います。
以上回避する方法があれば教えてください。
> OnSelchangeイベントが入ってきて、
> イベント内でGetWindowTextより、コンボボックスのテキストを取得すると
> Bが入ってくるわけではなく、Aが入ってきてしまうので困っているわけです。
本当ですね。知らなかった。
void Choge::OnSelchangeCombo1()
{
CString ss;
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO1); // IDC_COMBO1 はコンボのID
int n = pComboBox->GetCurSel(); // 0から始まる選択したリストの番号を取得
pComboBox->GetLBText(n, ss); // その番号の文字列を得る
}
こんなことをやってみたらssに選択したリストの文字列を取得できました。(^_^)
セルのインデックスでやる方法ですね。
考えもしませんでした。
Bunさんのやり方でやったらできました。
ありがとうございます。