struct closure
{
CUIXXX _Obj;
void* _Func;
};
在写GUI的时候,假如窗口A是CXXXWnd的一个实例,窗口A上有5个button和2个ComboBox
我现在点击窗口A上的某个button,需要这个button响应 CXXXWnd::OnButtonAPressed(button* btn);
这个时候,closure的_Obj保存的是实例A的地址,_Func保存的是CXXXWnd::OnButtonAPressed的地址,
当消息传递到button上的时候,在button类里面处理click消息,找到对应的closure,执行 _Obj->*_Func(this)
思路是这样的。
我现在点击ComboBox的下拉列表框中的某一项(假设是第3项),需要响应CXXXWnd::OnItemChanged(ComboBox* combo, int index);然后在ComboBox的消息处理中,找到对应的closure,也是需要执行_Obj->*_Func(this, 3);
现在的问题是:我怎么告诉closure的_Func,指向的函数有些是带参数,有些不带参数,有些带好几个参数。