ON_BN_CLICKED
宏采用按钮ID和成员函数指针。单击该按钮时,将调用成员函数。
我有一个成员函数foo
,我已经传递给ON_BN_CLICKED
的指针:
ON_BN_CLICKED(1485, &foo)
但foo
只是在课外直接调用我的业务逻辑函数:
void presentation::foo() {
business->foo();
}
我想设置ON_BN_CLICKED
来直接调用此业务逻辑功能。这可能吗?
答案 0 :(得分:2)
你可以,但我不鼓励它。如果您认为性能提升,编译器可能会优化额外的调用。如果您分解ON_BN_CLICKED
宏,您会发现它最终成为BEGIN_MESSAGE_MAP
... END_MESSAGE_MAP
中数组中的数组条目,其中包含CCmdTarget
个函数指针。因此,如果您的business
类派生自CCmdTarget
,则可以避免一些投射问题并直接调用它。更简单的方法可能是拥有自己的WM_COMMAND
处理和/或不依赖于消息映射机制并执行您自己的窗口过程。但这又是很多工作,很少或没有收获。