Oop 基于类层次结构的消息映射ID抽象

Oop 基于类层次结构的消息映射ID抽象,oop,visual-c++,mfc,message-map,Oop,Visual C++,Mfc,Message Map,我有一个类的层次结构,一个基本B,几个派生自B 有一个受保护的成员m_treeID,它是内部每个树的ID 我想在基类中填充消息映射,如下所示 ON_NOTIFY(NM_CLICK, m_treeID, OnNMClickTree) 而不是让每个D去做 ON_NOTIFY(NM_CLICK, TREE_A, OnNMClickTree) ON_NOTIFY(NM_CLICK, TREE_B, OnNMClickTree) 。。。等等 有可能吗?如果我没弄错的话,您是否考虑过使用 如果您需要为一

我有一个类的层次结构,一个基本
B
,几个派生自
B

有一个受保护的成员
m_treeID
,它是内部每个树的ID

我想在基类中填充消息映射,如下所示

ON_NOTIFY(NM_CLICK, m_treeID, OnNMClickTree)
而不是让每个
D
去做

ON_NOTIFY(NM_CLICK, TREE_A, OnNMClickTree)
ON_NOTIFY(NM_CLICK, TREE_B, OnNMClickTree)
。。。等等


有可能吗?

如果我没弄错的话,您是否考虑过使用

如果您需要为一组控件处理相同的WM\u NOTIFY消息,您可以使用ON\u NOTIFY\u RANGE而不是ON\u NOTIFY。例如,您可能有一组按钮,希望对这些按钮对特定通知消息执行相同的操作

在通知范围上使用时,可以通过指定范围的起始和结束子标识符来指定要处理通知消息的子标识符的连续范围

ClassWizard不处理通知范围上的;要使用它,您需要自己编辑消息映射


它在文章中解释了如何使用它。只要
TREE\u A
TREE\u B
等按顺序编号,那么您就可以为所有这些文件使用一个消息处理程序。

不,您不明白。我知道NOTIFY范围的
,但它只用于处理连续范围。我想使用类成员字段上标识的ID来处理基于多态性的项。是的,我得到了错误,因为它在消息映射规范内时超出了范围!也许你应该把你的测试结果放在你的问题里?@sergiol我出错了,因为它不在范围内-试着在它前面加上类名,比如在通知上加上
(NM\u CLICK,D::m\u treeID,OnNMClickTree)
@zett42:它给出了另一种错误。否则,我就不会在这里发帖了!还不太清楚您想要实现什么以及它与多态性的关系。基类可以处理通知,也可以不处理通知,子类也可以。子体还可以覆盖处理程序的基类实现,并可以选择调用基类实现。此外,受保护的成员m_treeID对基成员和子成员都可用。多态性在任何情况下都是可以实现的。ON_NOTIFY()宏中的第二个参数标识控件,这就是它的工作方式,为什么要更改它?@ConstantineGeorgiou:因为我想在ON_NOTIFY(NM_CLICK,m_treeID,OnNMClickTree)上写一行
而不是n行,每行都有每个树的ID;假设每个树的处理都相同,我可以在基类上使用handler方法。@IInspectable?