自己封装的CToolBar控件,消息映射ON_COMMAND_RANGE无效

acneyang 2019-03-11 04:02:45
请教,我自己封装一个CToolBar控件,按钮数量是动态的,能够接收到TTN_NEEDTEXT消息,但ON_COMMAND_RANGE定义的消息组却收不到,请问是什么原因?
类定义如下:
class MPilotLamp : public CToolBar
{
public:
......
afx_msg void OnBtnClick(UINT nID);
BOOL OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult) ;
.....
DECLARE_MESSAGE_MAP()
};


.cpp实现如下:

BEGIN_MESSAGE_MAP(MPilotLamp , CToolBar)
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &MPilotLamp::OnToolTipNotify)
ON_COMMAND_RANGE(ID_LampStart , ID_LampEnd , &MPilotLamp::OnBtnClick)
END_MESSAGE_MAP()
//这里还有另外一个类的消息映射,不会互相影响吧?

void MPilotLamp::OnBtnClick(UINT nID)
{
//不会被调用到,为什么呢???
。。。
}


BOOL MPilotLamp::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
//能正常显示tooltip
。。。
}
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2019-03-12
  • 打赏
  • 举报
回复
WM_COMMAND是发给CToolBar的父窗口的。 可以参考CMFCToolBar::EnableReflections的代码。
PZ_eng 2019-03-12
  • 打赏
  • 举报
回复
你会不会在其它地方也处理了这个消息?如果那样这里是接收不到消息的
acneyang 2019-03-12
  • 打赏
  • 举报
回复
明白了,谢谢诸位!
schlafenhamster 2019-03-11
  • 打赏
  • 举报
回复
在父窗口
afx_msg void OnButton32779More(UINT nID);
//
ON_COMMAND_RANGE(ID_BT_1, ID_BT_9,OnButton32779More)
//
void CDlgHasToolBarDlg::OnButton32779More(UINT nID)
{
// TODO: Add your command handler code here
CString str;
str.Format("%d at your service!", nID);
AfxMessageBox(str);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧