CListCtrlの派生クラスを2層に作成、中間クラスでメッセージを取得する方法は? – プログラミング – Home

CListCtrlの派生クラスを2層に...
 
通知
すべてクリア

[解決済] CListCtrlの派生クラスを2層に作成、中間クラスでメッセージを取得する方法は?


しょうわ
 しょうわ
(@しょうわ)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

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;//<=====ここに来ない
}


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

CSub2List のメッセージマップで、
CSubList を親にするのを忘れているということはないですか?

BEGIN_MESSAGE_MAP(CSub2List, CSubList)


返信引用
しょうわ
 しょうわ
(@しょうわ)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

dairygoodsさん、ありがとうございました。無事解決しました。
CSub2ListとCListCtrlが直接メッセージを交換していたため、CSubListに通知が来なか
ったという事ですね。
お騒がせして申し訳ありませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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