2 u014259816 u014259816 于 2014.03.29 10:50 提问

MFC 动态创建控件不响应消息

按照工程的要求,我必须建立一个类(动态链接库中),这个类是从CWnd派生的,里面的控件全部要求动态生成,而我这个类会作为一个Dialog的成员变量。
目前动态创建控件可以实现,但是控件却不响应消息,我认为是消息只在Dialog中,没法传到其成员变量中,不知道是不是这个原因……请大神帮忙!
我做了一个很简单的程序,请大神帮忙分析一下,灰常灰常感谢~

2个回答

u014259816
u014259816   2014.03.29 11:03

// MFCApplication1Dlg.h : 头文件

protected:
CTestWnd* m_pCTestWnd;

// MFCApplication1Dlg.cpp : 实现文件

BOOL CMFCApplication1Dlg::OnInitDialog()
{

// TODO: 在此添加额外的初始化代码
m_pCTestWnd = new CTestWnd(m_hWnd);
m_pCTestWnd->Create(_T("Test"), _T("Test"),
WS_CHILD | WS_VISIBLE, CRect(0, 0, 200, 200), this,1000);
}

// CTestWnd

class CTestWnd : public CWnd
{
DECLARE_DYNAMIC(CTestWnd)

public:
CTestWnd(const HWND& pParent);
virtual ~CTestWnd();

protected:
afx_msg void OnCButton();
DECLARE_MESSAGE_MAP()
public:
CButton* m_pCButton;
CRect m_rect;
};

// TestWnd.cpp : 实现文件
//

#include "stdafx.h"
#include "MFCApplication1.h"
#include "resource.h"
#include "TestWnd.h"

// CTestWnd

IMPLEMENT_DYNAMIC(CTestWnd, CWnd)

CTestWnd::CTestWnd(const HWND& pParent)
{

FromHandle(pParent)->GetClientRect(&m_rect);
m_pCButton = new CButton();
m_pCButton->Create( _T("确定"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    CRect(m_rect.left+10,m_rect.top+10,m_rect.left+60,m_rect.top+40),
    FromHandle(pParent), IDC_CBUTTON );

}

CTestWnd::~CTestWnd()
{
}

BEGIN_MESSAGE_MAP(CTestWnd, CWnd)
ON_BN_CLICKED(IDC_CBUTTON, &CTestWnd::OnCButton)
END_MESSAGE_MAP()

// CTestWnd 消息处理程序

void CTestWnd::OnCButton()
{

AfxMessageBox(_T("OK"));

}

u014259816
u014259816   2014.03.29 11:06

部分代码贴上来了
完整代码:
http://pan.baidu.com/s/1pJDawT9
请各位大神帮忙看一下,我都被折磨三天了,怎么也弄不出来,sendmessage都试过了。。。

Csdn user default icon
上传中...
上传图片
插入图片