我们以一个具体窗口(360Safe Window)的创建为入口,建立起程序的整个框架。然后逐步深入,对其中的细节以及duilib中各个类在任务的执行过程中负责的任务进行分析。分析以问题作为导向,随着层次的不断深入,问题也将越来越深入核心,关注细节。最后进行总结,得出整个duilib的框架结构,以及每个类的功能和使用方式。
【问题1】360Safe 窗口是是如何运行起来的?
Window窗口运行的四部曲:设计窗口、注册窗口、创建窗口、显示窗口。对应到本例中:
程序从WinMain
开始执行,到pFrame->Create(NULL, _T("360安全卫士"), UI_WNDSTYLE_FRAME, 0L, 0, 0, 800, 572)
时进入CWindowWnd
类。调用内部的RegisterSuperclass
函数对窗口进行设计和注册,再调用系统函数::CreateWindowEx
创建窗口。而后Create函数返回,调用::ShowWindow(*pFrame, SW_SHOW)
来显示窗口。
【问题2】360Safe的消息处理机制是如何实现的?
Windows窗口的一系列响应事件都是由消息触发的,当消息产生时系统将会把消息发往目标窗口的消息队列中,窗口程序则安排了一个死循环来不断地从自己的消息队列中接收和预处理消息(Window Massage