摘要: 上篇我说到,光有一个IOperation*的指针,是无法记录这么多事件的。由于无法确定要把回调绑定到哪个事件上,因此,我们需要引入一个中间的传递机制。没有看到前面的请先查阅上一篇关于UI回调Invoker的实现(一)问题回到,我怎么让InitControl(...)知道,我是SetPressFunc,还是SetItemChangeFunc,等等事件的回调。我初步的想法是:定义一个IAttacher接口:class IAttacher{public: virtual ~IAttacher() {}; virtual void AttachInvoker(IUIWnd* wnd) = 0;}; . 阅读全文
posted @ 2013-10-24 14:48 ·若狂 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 打算写一个DirectUI库,在写其中底层窗口的回调构造的时候遇到一个问题。Invoker是一个模板,因为closure的关系,它必须保存一个类对象的指针,和回调函数的地址。而函数调用的时候,就可以用一个通用的接口invoke就行了。接口的声明如下:class IOperation{public: virtual ~IOperation() {}; virtual void Invoke(IUIWnd* wnd, const EventArg& arg) = 0;}; 回调函数调用的时候,调用Invoke(...),传入(谁)那个窗口调用的,和调用的可能需要的数据。因为回调函数可能有不 阅读全文
posted @ 2013-10-24 12:49 ·若狂 阅读(481) 评论(0) 推荐(0) 编辑