MFC单文档如何给activex控件添加消息
对话框可以用classwizard添加消息响应但是单文档程序,cview里面添加的activex控件没有ID号,要添加控件自己的消息响应,不知道如何添加...
对话框可以用classwizard添加消息响应
但是单文档程序,cview里面添加的activex控件没有ID号,要添加控件自己的消息响应,不知道如何添加 展开
但是单文档程序,cview里面添加的activex控件没有ID号,要添加控件自己的消息响应,不知道如何添加 展开
2013-12-06
展开全部
只能手动添加。
假设控件类为CMyControl、视图类为CMyView。
1)MyView.h中:
class CMyView
{
protected:
CMyControl m_myControl; //定义控件变量
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); //重写View的OnCreate()函数
afx_msg void OnMyControlClick(); // 控件的消息响应函数
DECLARE_EVENTSINK_MAP() //声明对控件消息映射的支持
}
2) MyView.cpp中:
#define IDC_MYCONTROL 100
//控件的ID,只要为正整数即可
BEGIN_EVENTSINK_MAP(CMyView, CView)
ON_EVENT(CMyView, IDC_MYCONTROL , -600 /* Click */, OnMyControlClick, VTS_NONE) //控件消息映射
END_EVENTSINK_MAP()
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
//创建控件
m_myControl.Create(NULL, WS_VISIBLE, CRect(0,0,100,100), this, IDC_MYCONTROL); // CRect为控件大小,根据需要设定。
return 0;
}
//控件消息响应
void CMyView::OnMyControlClick()
{
AfxMessageBox("You clicked my control.");
}
有个偷懒的办法:
你把OnCreate函数写好后,其他的消息映射函数全都可以通过对话框来得到。所以你可以把控件放到一个对话框中,然后生成控件的消息映射函数,然后拷贝到View中。
假设控件类为CMyControl、视图类为CMyView。
1)MyView.h中:
class CMyView
{
protected:
CMyControl m_myControl; //定义控件变量
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); //重写View的OnCreate()函数
afx_msg void OnMyControlClick(); // 控件的消息响应函数
DECLARE_EVENTSINK_MAP() //声明对控件消息映射的支持
}
2) MyView.cpp中:
#define IDC_MYCONTROL 100
//控件的ID,只要为正整数即可
BEGIN_EVENTSINK_MAP(CMyView, CView)
ON_EVENT(CMyView, IDC_MYCONTROL , -600 /* Click */, OnMyControlClick, VTS_NONE) //控件消息映射
END_EVENTSINK_MAP()
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
//创建控件
m_myControl.Create(NULL, WS_VISIBLE, CRect(0,0,100,100), this, IDC_MYCONTROL); // CRect为控件大小,根据需要设定。
return 0;
}
//控件消息响应
void CMyView::OnMyControlClick()
{
AfxMessageBox("You clicked my control.");
}
有个偷懒的办法:
你把OnCreate函数写好后,其他的消息映射函数全都可以通过对话框来得到。所以你可以把控件放到一个对话框中,然后生成控件的消息映射函数,然后拷贝到View中。
2013-12-06
展开全部
dfagazsdfqetgdfgsdfhstyhqrrQWEREFHFGJHQ4QWEascvgvbjwrrAVBJMWaFGEGFE
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询