当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: ATL 窗口类源代码学习笔记 本文是自己学习源代码的总结,在写作过程和察看代码寻找资料的时候,找到了些文章。
 

 

 ·3d游戏引擎设计与实现(10)    »显示摘要«
    摘要: 经这几天的努力,已经把ui,d3d设备管理完成了,接着要开始写其它部份。要写哪部份才更好呢?我想肯定是先考虑怎么样渲染世界里所有的物品。要渲染物品得确定使用什么模型文件。现在可以选择的有好几种格式,第一种最方便的,应是用x的文件格式,因为d3d已经把它完全封装好。第二种是使用mdl文件格式,就是hl的格式。第三种就是quake3使用md3的格式。其实每种格式都有自己的优点和缺点,就看着自己喜欢用......
    摘要:----------------------------- 书名 ------------------------------------------------ 容量 ---addison.wesley.open.gl.shading.language ------------------------------------------- 4042k3d.game.engine.design.u......


ATL窗口类源代码学习笔记

atl 窗口类源代码学习笔记

【程序编程相关:(转载)关于Windows下ShellC

【推荐阅读:WIN2000下的系统进程名称列表

【扩展信息:你好,LOG4NET

本文是自己学习源代码的总结,在写作过程与察看代码寻找资料的时候,找到了些文章.

可参考:

wtl流程分析-初稿

atl中的thunk机制学习

1,cwindow

atl有一个专门为窗口设计的基础类,可以做全部的窗口操作,这就是cwindow.它实际上就是对hwnd操作的一个包装类,对几乎所有以hwnd句柄为第一个参数的窗口api的进行了封装,例如:setwindowtext() 与 destroywindow().cwindow类有一个公有成员m_hwnd,使你可以直接对窗口的句柄操作,cwindow还有一个操作符hwnd,可以将cwindow对象传递给以hwnd为参数的函数.

cwindow是一个普通的c++类.创建一个cwindow对象占用很少的资源,因为只有一个数据成员.

2,cwindowimpl继承树

在atl类中对窗口过程的实现是cwindowimpl.cwindowimpl 含有所有窗口实现代码,例如:窗口类的注册,窗口的子类化,消息映射以及基本的windowproc()函数.

我们先追根溯源,看看其继承过程:

一般来说,我们需要定义一个自己的窗口,首先就从cwindowimpl继承而来.

class cmywnd : public cwindowimpl;

template

class atl_no_vtable cwindowimpl : public cwindowimplbaset;

template

class atl_no_vtable cwindowimplbaset : public cwindowimplroot;

template

class atl_no_vtable cwindowimplroot : public tbase, public cmessagemap;

class atl_no_vtable cmessagemap

{

public:

virtual bool processwindowmessage(hwnd hwnd, uint umsg, wparam wparam, lparam lparam,

lresult& lresult, dword dwmsgmapid) = 0;

};

2.1,cmessagemap

该类是一个纯虚类,主要目的是提供对windows消息的处理接口.
...   下一页
    摘要:“警告: 不能将项目xxxxx中的依赖项“xxx, version=1.0.1777.21016, culture=neutral”复制到运行目录,因为它将改写引用“xxx, version=1.0.1777.23397, culture=neutral”。”相信这样的警告很多像我一样的初学者都遇见过。我用如下的例子来解释我对......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE