10 2013 档案
摘要:上篇我说到,光有一个IOperation*的指针,是无法记录这么多事件的。由于无法确定要把回调绑定到哪个事件上,因此,我们需要引入一个中间的传递机制。没有看到前面的请先查阅上一篇关于UI回调Invoker的实现(一)问题回到,我怎么让InitControl(...)知道,我是SetPressFunc,还是SetItemChangeFunc,等等事件的回调。我初步的想法是:定义一个IAttacher接口:class IAttacher{public: virtual ~IAttacher() {}; virtual void AttachInvoker(IUIWnd* wnd) = 0;}; .
阅读全文
摘要:打算写一个DirectUI库,在写其中底层窗口的回调构造的时候遇到一个问题。Invoker是一个模板,因为closure的关系,它必须保存一个类对象的指针,和回调函数的地址。而函数调用的时候,就可以用一个通用的接口invoke就行了。接口的声明如下:class IOperation{public: virtual ~IOperation() {}; virtual void Invoke(IUIWnd* wnd, const EventArg& arg) = 0;}; 回调函数调用的时候,调用Invoke(...),传入(谁)那个窗口调用的,和调用的可能需要的数据。因为回调函数可能有不
阅读全文
摘要:在实际项目中,很多地方都存在IO。而IO是很耗时间的,比方说:new、malloc。对于现代的计算机来说,动辄就是GHz量级的主频,似乎感觉不到影响。但是在大型的项目里面,反复的new和delete,不仅会耗大量的时间,还会造成内存碎片。new是一个很麻烦的东西。有new的地方,就是你可能栽坑的地方...
阅读全文