04 2013 档案

摘要:CDialogImpl 对话框本质上是布局和行为受约束的窗口。最原始的模态对话框API是: 1: WINUSERAPI2: INT_PTR3: WINAPI4: DialogBoxParamW(5: __in_opt HINSTANCE hInstance, //applicaton instance6: __in LPCWSTR lpTemplateName,... 阅读全文
posted @ 2013-04-22 20:58 MacroLee 阅读(935) 评论(0) 推荐(0)
摘要:消息链(Message chaining) 当我们一次又一次用相同的方式来处理消息时,一定想到了重用消息处理的实现。一种直接而简单的想法实现如下: 1: template <typename Deriving> 2: class CFileHandler { 3: public: 4: LRESULT OnFileNew(WORD, WORD, HWND, BOOL&); 5:... 阅读全文
posted @ 2013-04-22 20:57 MacroLee 阅读(540) 评论(0) 推荐(0)
摘要:超类化 Windows窗口对象模型定义窗口类并创建窗口对象实例,和c++的对象模型十分相似。HWND之于WNDCLASSEX结构体正如同this指针之于c++的类。如果仍然按照c++的面向对象模型来进一步用于Windows,那么我们也可以延伸出继承这个特性:Windows superclassing。 超类化技术可以复制一个已有窗口类的WNDCLASSEX结构体并可赋予一个新的命名,重新给定一个W... 阅读全文
posted @ 2013-04-05 14:27 MacroLee 阅读(542) 评论(0) 推荐(0)
摘要:现在分析ATL中窗口过程的实现。这部分功能在CWindowImplBaseT类中实现。 在Win32程序中,窗口过程(WndProc)是一个回调函数,且其指针保存在WNDCLASSEX结构体中,在窗口注册时传递给了操作系统。当窗口得到消息时,OS会调用窗口过程,通过一个大的switch-case语句块实现了消息的分发和处理。而在ATL中,以一种看似优雅的方式来封装这个过程。 首先,注意到在DE... 阅读全文
posted @ 2013-04-02 22:56 MacroLee 阅读(781) 评论(0) 推荐(0)