MFC中添加动态按钮的响应函数
.在MESSAGE_MAP中添加响应函数:MESSAGE_MAP表中定义了消息响应函数,其格式为:消息名(ID,函数名),当我们用ClassWizard添加函数时,会自动...
.在MESSAGE_MAP中添加响应函数:
MESSAGE_MAP表中定义了消息响应函数,其格式为:消息名(ID,函数名),当我们用ClassWizard添加函数时,会自动添加在AFX_MSG_MAP括起的区间内,如:
BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
手工添加时不要添加到AFX_MSG_MAP区间内,以防ClassWizard不能正常工作,如:
BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
//}}AFX_MSG_MAP
ON_BN_CLICKED(ID_MYBUT1, OnMybut1)
ON_BN_CLICKED(ID_MYBUT2, OnMybut2)
ON_BN_CLICKED(ID_MYBUT3, OnMybut3)
END_MESSAGE_MAP()
其中ON_BN_CLICKED是按钮单击消息。
看不懂啊,MESSAGE_MAP()是什么,在哪个MESSAGE_MAP()中添加?我添加了无法编译 展开
MESSAGE_MAP表中定义了消息响应函数,其格式为:消息名(ID,函数名),当我们用ClassWizard添加函数时,会自动添加在AFX_MSG_MAP括起的区间内,如:
BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
手工添加时不要添加到AFX_MSG_MAP区间内,以防ClassWizard不能正常工作,如:
BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
//}}AFX_MSG_MAP
ON_BN_CLICKED(ID_MYBUT1, OnMybut1)
ON_BN_CLICKED(ID_MYBUT2, OnMybut2)
ON_BN_CLICKED(ID_MYBUT3, OnMybut3)
END_MESSAGE_MAP()
其中ON_BN_CLICKED是按钮单击消息。
看不懂啊,MESSAGE_MAP()是什么,在哪个MESSAGE_MAP()中添加?我添加了无法编译 展开
3个回答
展开全部
首先说明一下:
BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)和END_MESSAGE_MAP()之间是VC编译器在编译程序时候,查找消息与函数的映射关系的地方,比如编译这个文件,当编译器在这个之间发现语句ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0),时,就会把消息ON_BN_CLICKED,IDC_ICONBUT0,OnIconbut0三者关联起来,使得程序运行的时候,点击ID为IDC_ICONBUT0后产生ON_BN_CLICKED消息,同时OnIconbut0函数被调用。对于一个窗口,除了我们通过手动添加或通过向导添加的消息映射之外,还有很多消息需要进行映射;比如这个例子,当鼠标从窗口上移动时,系统会向窗口发送鼠标移动消息,可是你在这里并没有处理,那谁来映射并处理这些消息,因为编译器在这里没有找到鼠标移动的消息映射,它就会从这个类的父类逐曾往上找,直到找到为止,而BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)就是告诉编译器,如果在这里找不到消息映射,就从这个类的父类CFormView开始往上查找。比如鼠标移动消息,在这里并没有做映射处理,编译器就会到父类CFormView中去查找,如果父类CFormView中也没有,编译器就会不断的往上找,直到找到CWnd类,CWnd类映射了所有的窗口消息。
对于不熟悉如何添加消息映射的朋友,最好用向导添加。对于手动添加消息映射,除了在这里添加消息映射之外,还要定义消息函数。
你是怎样添加的,怎么个无法编译,编译错误是什么?
BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)和END_MESSAGE_MAP()之间是VC编译器在编译程序时候,查找消息与函数的映射关系的地方,比如编译这个文件,当编译器在这个之间发现语句ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0),时,就会把消息ON_BN_CLICKED,IDC_ICONBUT0,OnIconbut0三者关联起来,使得程序运行的时候,点击ID为IDC_ICONBUT0后产生ON_BN_CLICKED消息,同时OnIconbut0函数被调用。对于一个窗口,除了我们通过手动添加或通过向导添加的消息映射之外,还有很多消息需要进行映射;比如这个例子,当鼠标从窗口上移动时,系统会向窗口发送鼠标移动消息,可是你在这里并没有处理,那谁来映射并处理这些消息,因为编译器在这里没有找到鼠标移动的消息映射,它就会从这个类的父类逐曾往上找,直到找到为止,而BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)就是告诉编译器,如果在这里找不到消息映射,就从这个类的父类CFormView开始往上查找。比如鼠标移动消息,在这里并没有做映射处理,编译器就会到父类CFormView中去查找,如果父类CFormView中也没有,编译器就会不断的往上找,直到找到CWnd类,CWnd类映射了所有的窗口消息。
对于不熟悉如何添加消息映射的朋友,最好用向导添加。对于手动添加消息映射,除了在这里添加消息映射之外,还要定义消息函数。
你是怎样添加的,怎么个无法编译,编译错误是什么?
2015-08-31 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464972
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
为创建的BUTTON手动添加响应函数,步骤如下:
1.打开Resource Symbols,为这个BUTTON新建一个唯一的ID(例如IDC_MYBUTTON 101)并指定相应的值,当然,也可以把那些后面没有打勾(即未使用)的值。
2.在**Dlg.h的AFX_MSG{................}AFX_MSG之间加入afx_msg void OnMyButton();
(在此,假设要添加的消息响应函数为 void OnMyButton())
3. 在**Dlg.cpp的BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间加入ON_BN_CLICKED
(IDC_MYBUTTON, OnMyButton)
4.在**Dlg.cpp中添加成员函数void **Dlg::OnMyButton(){......................}
1.打开Resource Symbols,为这个BUTTON新建一个唯一的ID(例如IDC_MYBUTTON 101)并指定相应的值,当然,也可以把那些后面没有打勾(即未使用)的值。
2.在**Dlg.h的AFX_MSG{................}AFX_MSG之间加入afx_msg void OnMyButton();
(在此,假设要添加的消息响应函数为 void OnMyButton())
3. 在**Dlg.cpp的BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间加入ON_BN_CLICKED
(IDC_MYBUTTON, OnMyButton)
4.在**Dlg.cpp中添加成员函数void **Dlg::OnMyButton(){......................}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-06-04
展开全部
干啥呀,弄一大堆
不就是动态按钮的响应吗,就3个步骤很好记啊:
【1】.在头文件声明响应函数,比如:在mydlg.h添加void onButton();
【2】.在 //{{AFX_MSG_MAP
//}}AFX_MSG_MAP
内添加关联:,比如。在mydlg.cpp添加ON_COMMAND(IDC_BUTTON,onButton)
【3】.在cpp中实现响应函数的主体
比如:在mydlg.cpp中添加
void Cmydlg::onButton()
{
...
}
不就是动态按钮的响应吗,就3个步骤很好记啊:
【1】.在头文件声明响应函数,比如:在mydlg.h添加void onButton();
【2】.在 //{{AFX_MSG_MAP
//}}AFX_MSG_MAP
内添加关联:,比如。在mydlg.cpp添加ON_COMMAND(IDC_BUTTON,onButton)
【3】.在cpp中实现响应函数的主体
比如:在mydlg.cpp中添加
void Cmydlg::onButton()
{
...
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询