VC.net2003 MFC ダイアログベースです
リストコントロールをCListCtrl -> CSubList -> CSub2List の順に派生クラスを作成、
CSubListに定義したエディットボックスのフォーカスが外れた時に、CSubList内でメッ
セージを取得したいのですが
OnEnKillfocusEdit()がコールされません。
ダイアログに定義した CSub2List m_List;を CSubList m_List; に変更すればコール
されます。
CSubList にできるだけ機能をまとめておきたいので、 CSub2Listにメッセージの受け皿
を持たせなければいけないのは嬉しくないのですが、なにか良い方法は無いでしょう
か。
色々探してはみたのですが、検索キーワードが思いつきません。どなたかご教授お願い
します。
//----------------------------------------------
// CSubList ヘッダー
#pragma once
#define IDC_EDIT1 1000
class CSubList : public CListCtrl
{
DECLARE_DYNAMIC(CSubList)
public:
void Initial();//<=OnInitDialog()からコール
CEdit m_Edit;
afx_msg void OnEnKillfocusEdit();
protected:
DECLARE_MESSAGE_MAP()
};
//----------------------------------------------
// CSub2List ヘッダー
#pragma once
#include SubList.h
class CSub2List : public CSubList
{
DECLARE_DYNAMIC(CSub2List)
protected:
DECLARE_MESSAGE_MAP()
};
//----------------------------------------------
// CSubList ソース
IMPLEMENT_DYNAMIC(CSubList, CListCtrl)
BEGIN_MESSAGE_MAP(CSubList, CListCtrl)
ON_EN_KILLFOCUS(IDC_EDIT1, OnEnKillfocusEdit)
END_MESSAGE_MAP()
void CSubList::Initial()
{
m_Edit.Create(0,CRect(0,0,50,50), this, IDC_EDIT1);
m_Edit.ShowWindow(TRUE);
}
void CSubList::OnEnKillfocusEdit()
{
int i = 0;//<=====ここに来ない
}
CSub2List のメッセージマップで、
CSubList を親にするのを忘れているということはないですか?
BEGIN_MESSAGE_MAP(CSub2List, CSubList)
dairygoodsさん、ありがとうございました。無事解決しました。
CSub2ListとCListCtrlが直接メッセージを交換していたため、CSubListに通知が来なか
ったという事ですね。
お騒がせして申し訳ありませんでした。