アプリ版:「スタンプのみでお礼する」機能のリリースについて

開発環境
・Windows XP (32bit)
・Visual C++ 2005

以下内容でCEditの派生クラスを作成したところ、
その派生クラスを使用するダイアログで
EN_CHANGEイベントがキャッチ出来ませんでした。

どうすればキャッチ出来るようになるでしょうか?
アドバイス頂けると大変ありがたいです。

※エディットコントロールに文字を入力すると
 以下(1)の処理には来るのですが、
 以下(2)の処理には来ませんでした。

//------------------------------------------------
// EditEx.h
//------------------------------------------------
// CEditの派生クラス
class CEditEx : public CEdit
{
public:
    CEditEx(void);
    virtual ~CEditEx(void);

//------------------------------------------------
// EditEx.cpp
//------------------------------------------------
// CEditExクラス内でEN_CHANGEイベントを処理
BEGIN_MESSAGE_MAP(CEditEx, CEdit)
    ON_CONTROL_REFLECT(EN_CHANGE, &CEditEx::OnEnChange)
END_MESSAGE_MAP()

// EN_CHANGEイベントハンドラ
void CEditEx::OnEnChange(void)
{
    // (1)
}

//------------------------------------------------
// DialogEx.h
//------------------------------------------------
// CEditExクラスをメンバに持つダイアログ
class CDialogEx : public CDialog
{
private:
    CEditEx m_Edit1;

//------------------------------------------------
// DialogEx.cpp
//------------------------------------------------
// CDialogExクラス内でもEN_CHANGEイベントを処理したい
BEGIN_MESSAGE_MAP(CDialogEx, CDialog)
    ON_EN_CHANGE(IDC_EDIT1, &CDialogEx::OnEnChangeEdit1)
END_MESSAGE_MAP()

// EN_CHANGEイベントハンドラ
void CDialogEx::OnEnChangeEdit1(void)
{
    // (2)
}

A 回答 (1件)

ON_CONTROL_REFLECT を ON_CONTROL_REFLECT_EX に書き換えて、


void CEditEx::OnEnChange(void) を BOOL CEditEx::OnEnChange(void) に書き換えます。
OnEnChangeの戻り値にFALSEを返せば、親(CDialogEx)のハンドラが呼び出されますよ。
    • good
    • 0
この回答へのお礼

おおっ、ダイアログ側でもイベントハンドラが呼ばれるようになりました!
素早い回答、大変助かりました。
ありがとうございます!!

お礼日時:2012/12/01 17:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A