CBN_SELCHANGE内でテキストを入れたい – プログラミング – Home

CBN_SELCHANGE内でテキスト...
 
通知
すべてクリア

[解決済] CBN_SELCHANGE内でテキストを入れたい


SH
 SH
(@SH)
ゲスト
結合: 18年前
投稿: 17
Topic starter  

すみません、他の記事を読んでいるところに新規で質問を書いてしまいました。
再投稿させていただきます。
おはしさん、申し訳ありません。

VC++ 2005、MFCです。

ドロップダウン形式のコンボボックスを置き、
CBN_SELCHANGEのハンドラ内で

void CTestDlg::OnSelchangeCombo()
{
m_combo.SetWindowText(_T(SetWindowText));
}

と、テストルーチンを入れてみたのですが、
選択した項目のほうが表示されてしまいます。

項目自体には「名字」「名前」などの一般名詞を選択肢として入れておき、
選択された項目を元に実際に表示するテキストを入れたいのですが、
CBN_SELCHANGE内ではSetWindowText()は使えないものなのでしょうか?


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

> CBN_SELCHANGE内ではSetWindowText()は使えないものなのでしょうか?

そもそも、リストボックスは「選択したものを表示」するのであるので、
それ以外のものを表示するのは他のコントロールにすべき、
というのが原則です。

SPY++で見張ればすぐにわかることですが、CBN_SELCHANGEの後で、
EN_CHANGE等により、実際の表示が変更されます。
従って、表示を変更するために、CBN_SELCHANGEの段階で何をやっても
無駄なのは自明です。

EN_CHANGEは複数来るので、どれが最後であるかはわかりません。
んが、まぁ、やるだけやってみてください。
もし、ダメなら原則に戻ること。

では、がんばってください。


返信引用
SH
 SH
(@SH)
ゲスト
結合: 18年前
投稿: 17
Topic starter  

OnSelchangeCombo()の中ではSetTimer(1, 0, NULL)をコールし、
直後のOnTimer()の中でSetWindowText()を使うようにしてみたところ、
うまくセットできました。
ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました