繁体   English   中英

ON_BN_CLICKED呼叫非会员功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM