"易语言.尘土"界面库2.0版源代码分析(2):创建窗口(CreateWindow)

作者:liigo

原文链接:http://blog.csdn.net/liigo/archive/2009/06/28/4304295.aspx

转载请注明出处:http://blog.csdn.net/liigo

liigo: "易语言.尘土"界面库2.0版源代码分析系列

 

  我们都知道,在Windows操作系统下,几乎所有的窗口和窗口组件都是由API函数CreateWindow/CreateWindowEx创建出来的。所以我(liigo)拿到“易语言.尘土”界面库2.0版源代码之后,二话不说,迫不及待的在易语言中全文搜索“CreateWindow”(编辑->整体搜寻,快捷键: Alt+E+E)。共得到两个搜索结果:一个是对CreateWindowExA函数的DLL声明,一个是对它的调用(在易语言类方法“_窗口基类._创建()”中)。下面我的视线当然聚焦于“_窗口基类._创建()”:

BaseWindow_Create 

 

  这个函数,“_窗口基类._创建()”,就是“易语言.尘土”界面库源头,如长江之水,源于唐古拉山脉之沱沱河,涓涓溪流终汇成大河。以此为突破口,寻根问结,或许可以一览类库之骨架。

  通过全文搜索“_窗口基类._创建”,发现调用它的地方有三处:“_窗口.创建”,“_组件基类._创建组件”,“_多文档窗口.创建”。“_组件基类”是所有组件的基类,也就是说,所有组件都是通过“_组件基类._创建组件”创建出来的,最终还是归结于“_窗口基类._创建”。所以,说“_窗口基类._创建”是整个类库整体机制的基石,应该是不会错的。

  先大致浏览一下上面的代码吧,哦,以“CreateWindowExA”为核心,前面是“__监控窗口创建”,后面是卸载全局钩子(Hook)。直观推测的话,这个钩子应该是在“__监控窗口创建”中创建的吧?从函数命名来看,其功能相当明确,就是“监控窗口创建”(中文编程的优势在这里体现出来了,不需要多余的注释),那它内部具体做了些什么工作呢?这些工作是否跟窗口消息(Windows Message)有关呢?

  我一上来就找“CreateWindow”,但找到了创建窗口并不是最终目标,我(liigo)其实是想通过“CreateWindow”找到窗口的消息处理函数(WNDPROC,WndProc),进而得窥整个类库的消息处理机制。那么,窗口的消息处理函数(WndProc)在哪儿呢?且看下文分解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值