[英]ON_BN_CLICKED Call Non-Member Function
ON_BN_CLICKED
宏带有按钮ID和成员函数指针。 单击该按钮时,将调用成员函数。
我有一个成员函数foo
,它是我传递给ON_BN_CLICKED
的指针:
ON_BN_CLICKED(1485, &foo)
但是foo
只是直接在类外部调用我的业务逻辑函数:
void presentation::foo() {
business->foo();
}
我想设置ON_BN_CLICKED
直接调用此业务逻辑功能。 这可能吗?
您可以,但我不建议这样做。 如果您在考虑提高性能,则编译器仍然可以优化额外的调用。 如果分解ON_BN_CLICKED
宏,则会发现它最终是BEGIN_MESSAGE_MAP
... END_MESSAGE_MAP
中的数组中的数组条目,其中包含CCmdTarget
函数指针。 因此,如果您的business
类是从CCmdTarget
派生的,则可以避免一些转换问题,并直接调用它。 一种更简单的方法可能是拥有自己的WM_COMMAND
处理和/或不依赖于消息映射机制并执行自己的窗口过程。 但这又是很多工作,但收效甚微或毫无收益。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.