WTL的框架粗略概况

  其实对于windows下的编程 无非是 创建窗口 和 消息循环。就这两个地方 你搞清楚了 就ok了。

   在WTL的实现中,它的消息映射宏写的比较简单,如果你的窗口类(包括控件)里面 

写下来DECLARE_WND_SUPERCLASS(_T(“XXX"), CListViewCtrl::GetWndClassName())类似的语句的话 

 其实就是 定义了一个窗口信息,一个定义窗口信息的宏,如果你不写这一句 也没事,父类 你所继承的

  CWindowImpl类 这个类 也有这个宏,这个是WTL库自己写的。

       说白了 当你create 窗口之前, 一定会去注册窗口 从而指定回调的,WTL用的是这句话T::GetWndClassInfo().Register(&m_pfnSuperWindowProc);

   这句话 说白了 T代表你的窗口 或者空间类,一看就知道是注册窗口, 在WTL中 注册窗口指定的回调函数是

StartWindowProc  这个函数最终会执行 WindowProc函数的 ProcessWindowMessage;

   这个ProcessWindowMessage 函数正是 你的窗口(控件)类的  消息映射宏,说白了 就是个switch语句

跟win32 那个原始程序的switch 语句差别不大。 可以说一样滴。

    于是创建窗口 ,显示窗口基本上就是这个套路了, 让控件得以显示 ,无非就是通过DDX去绑定,这个时候 控件是拖上去的, 还一种就是你去直接create。   如果是DDX的 实际上调用的是 Subclasswindow,这个函数说白了就是给控件一个窗口过程函数而已。  


     大道不过三两行,说穿不值一文钱。  WTL的源码比MFC的要简洁一些。 虽然UI封装的少,但是没有大碍,如果WTL用时间长了 你会觉得 比MFC更舒服,实际上MFC提供的文档视图结构 基本上 大部分人 都没用到,很多做界面开发的 更本不需要这个。


        

WTL的框架粗略概况

上一篇:servlet三种实现方式之二继承GenericServlet开发


下一篇:leetcode--Power(x,n)