易语言界面库的实现(二)消息预处理 和窗口生存周期。

      在窗口过程里面能处理所有的消息? 答案是 NO!

 

    isdialogmessage 和 TranslateMessage 干啥吃的? 它把原始消息都给弄了一下。我拿不到原汁原味的东西。

 

    如果说封装库。会有这个损失。那肯定是最大的损失!要让你的窗口类能够有机会处理最原始的消息。那必须在消息分发之前。也就是说 GetMessage 之后就直接处理。这才叫原汁原味。当然,对于非队列消息。也就只能能在窗口过程里处理。这完全足够了。

 

    到现在为止。易语言的类里面有了两个最基本的虚方法。"消息过程" 和 “消息预处理”。这两个方法都是被系统调用。你要处理自己的。你要自己处理这些事? 继承覆盖。就可以了。

 

     关于事件表。

 

每个类都有自己的 事件表。用哈希+链表来管理,虽然内存大了点。但速度整体还行。特别是写大型界面的时候。不会损失太多消息映射效率。

 

     关于窗口生存周期、

 

又一次用到了以语言的虚方法和汇编了。在窗口过程的 WM_NCDESTROY 事件里面。调用对象的 “清理对象” 方法。这样在窗口关闭的时候。对象能有机会回收资源。 你继承的窗口类也是如此。覆盖这个方法。自己在里面回收就是了。要注意的是。你必须在你的类里面显式调用基类的同名方法。否则基类的资源会无法回收。

 

 

你可能感兴趣的:(汇编,语言)