凝聚性强.组织化强的类库就是Application Framework.一组合作无间的对象,彼此藉消息的流动而沟通,并且互相调用对方的函数以求完成任务,这就是Application Framework. Application Framework是一组超级的类库,能够被称为Framework者必须是其中的类性质紧密咬合,互相呼应. 绝大部分类库,往往以一个或两个类,作为其它绝大部分类的基础,MFC也一样.CObject是万类之首,凡派生自CObject者,得以继承数个面向对象重要性质,包括RTT…
百度云及其他网盘下载地址:点我 编辑推荐 <深入浅出MFC>内含光盘一片,书中所有原始码与可执行文件尽在其中. 作者简介 侯俊杰,先生不知何许人也,闲静少言,不慕荣利.好读书,求甚解:每有会意,击节高歌,欣然忘食.嗜咖啡,妻严,不能常得.亲旧知其如此,或备而礼之,或置而招之:造饮辄尽,期在必快.既快而退,曾不吝去留.善善恶恶,贤贤贱不肖.曲高和寡,直言罪人,晏如也.胸有点墨,心无城府.常著文章白娱,颇示己志.忘怀得失,以此自终. 目录 第0章 你一定要知道(导读)这本书适合谁你需要什么技术基础…
侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了. 而李久进的<mfc深入浅出>,听说的人可能就少得多.原因听说是这本书当时没有怎么宣传,而自从1999年第1版后,似乎也没有重印过,现在市面上根本找不到,所以大部分人都不知道.我手里现在恰好有一本,是从图书馆借的.这本书全名为<mfc深入浅出——从mfc设计到mfc编程>李久进编著,华中理工大学出版.此书极佳! 我这本书是1999年9月第一版,印数居然只有5000册.这么好的书只印50…
1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Information)运行时类型识别 (3)Dynamic Creation 动态创建 (4)Persistence 永久保存 (5)Message Mapping 消息映射 (6)Message Routing 消息传递(回溯) 2. MFC数个最重要的类的层次结构: 3. 以下范例展示了类层次及其成员(对…
1. MFC之所以为Application Framework,最重要的一个特征就是它能够将管理数据的程序代码和负责数据显示的程序代码分离开来,这种能力由MFC的Document/View提供.Document/View是MFC的基石,了解它,对于有效运用MFC有极关键的影响.甚至OLE复合文件(compound document)都是建筑在Document/View的基础之上. 2. Document: 3. View: 注:在MFC里头,一旦WM_PAINT发生,Framework会自动调用…
        本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节号而非页码.相同的情况适合于"龙书"第二版. 上一期的地址: DX 11游戏编程学习笔记之5 这一章的内容非常短所以也是相对轻松的一期了.只是这一章的内容要深入理解的话并非非常easy.另外这一章非常多内容与"龙书"第二版的第6章内容是一样的.而且包括了&q…
<python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params):  block  return values 记录函数:def function_name(params):  'NOTE' #注释  block  return values function_name.__doc__help(function_name) return # 没有返回值 位置参数和关键字参数:关键字参数要提供参数的名字:def function_name(…
<python基础教程(第二版)>学习笔记 字典(第4章)创建字典:d={'key1':'value1','key2':'value2'}lst=[('key1','value1'),('key2','value2')]; d=dict(lst)d=dict(key1='value1', key2='value2')字典基本操作:d={'key1':'value1','key2':'value2'}; len(d) ==> 2 #字典中的键值对数量d={'key1':'value1','…
<python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符串:使用%,%左侧是格式字符串,%右侧是需要格式化的值例如:print '%s=%d' % ('x',100) ==> x=100使用%% 格式字符串可以输出 %模板字符串:from string import Templates=Template('$x is 100');  s.substitute…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及复数相乘如何在平面上表达旋转: 理解四元数以及它的运算: 理解单位四元数如何表达3D旋转: 学习如何转换旋转变量的表达: 学习如何对单位四元数线性差值,并且理解它等价于几何上的3D角度差值: 熟悉DirectX Math库中的四元数类和操作. 1 回顾复数 四元数可以看做是一个复数,所以我们先要回顾…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 学习目标 理解为什么需要法线贴图: 学习法线贴图如何保存: 学习法线贴图如何创建: 学习法线贴图中的法向量的坐标系统是如何与物体空间的三角形的坐标系统关联的: 学习如何在顶点和像素着色器中实现法线贴图. 1 使用法线贴图的原因 找到一种方法在光滑的平面上,显示出更多的细节(比如粗糙的砖块). 如果使用曲面细分是可以增加实际的细节的,但是我们还是需要…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 学习如何实现硬件实例化: 熟悉包围体,学习如何创建和使用它们: 学习如何实现截头锥体剔除. 1 硬件实例化 给每个实例都复制一份顶点和索引是非常浪费的,所以我们只保存一份物体在局部坐标系下的数据,然后使用…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 回顾视景坐标系变换的数学算法: 熟悉第一人称摄像机的功能: 实现第一人称摄像机: 理解如何动态索引一组纹理. 1 回顾视景坐标系变换 如果QW = (Qx, Qy, Qz, 1), uW = (ux,…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 曲面细分阶段包含渲染管线中的三个阶段,用以细分几何物体,它在顶点着色器和几何着色器之间.使用曲面细分的主要原因: 基于GPU的LOD: 物理和动画的优化,可以在低面模型上计算物理效果和动画,然后细分为高面模型用以渲染: 节…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 假设我们没有使用曲面细分阶段,几何着色器阶段就是在顶点着色器和像素着色器之间的一个可选的阶段.几何着色器输入的是基元,输出的是一个基元列表:假如我们绘制的是三角形列表,那么几何着色器…
1.其实Document/View不是什么新东西,Xerox PARC实验室是这种观念的滥觞.它是Smalltalk环境中的关键性部分,在那里它被称为Model-View-Controller(MVC).其中的Model就是MFC的Document,而Controller相当于MFC的Document Template. 2.Document在MFC的CDocument里头被实例化.CDocument本身并无实际用途,他只是提供一个空壳.你应该从它派生一个自己的类,然后改写负责文件读写操作的Se…
一.头文件说明 STDAFX.H 这个文件用来作为Precompile header file,其内只是载入其他的MFC头文件.应用程序通常会准备自己的头STDAFX.H. AFXWIN.H 每一个Windows MFC程序都必须载入它,因为它以及它所载入的文件声明了所有的MFC类. 在WINDEF.H中有CALLBACK的定义 #define CALLBACK _stdcall //是一种函数调用习惯 在AFXWIN.H中有afx_msg的定义 #define afx_msg   //故意安排…
0:MFC类层次结构 1:MFC程序的初始化过程CWinApp::InitApplication()CMyWinApp::InitInstance()CMyFrameWnd::CMyFrameWnd()CFrameWnd::Create()CWnd:CreateEx()CFrameWnd::PreCreateWindow()CWinApp::Run()CWinThread::Run() 2:RTTI[CRuntimeClass]DECLARE_DYNAMICIMPLEMENT_DYNAMIC 3…
需要什么函数库(.lib) windows支持动态链接库,应用程序所调用 的windows api 函数是在“执行期间“才链接上的.Windows程序调用 可以分为 C Runtimes以及windows api 大概两部分.早期的C Runtimes并不支持动态链接,vc++ 4.0之后已经支持.并且在32位已不在拥有small/medium/large等内存模式之分. LIBC.lib:这是c Runtime函数库的静态版本 MSVCRT.lib:这是 c Runtime函数的动态库版本(M…
本章将会对MFC的消息映射和 命令传递机制做深入探讨. MFC规定了消息传递的路线,消息会按照这个路线传递下去,找不到归宿的话就交给DefWindowProc. 在产生窗口之前,如果我们在创建窗口时指定的窗口类为NULL时,MFC会自动注册五个默认的窗口类,每个窗口类有自己的窗口函数.不同窗口得到的消息应该交由不同的窗口函数来处理.所谓的命令传递机制是为了让消息的流动有线路可循,实现一个巨大的网,实现所有可能的路线.这就是所谓的消息映射图. WM_COMMAND是来自菜单或工具栏,被称为命令消息…
原始需求和设计 事情是这样开始的,公司需要做一套程序,鸭子,设计如下: 一个鸭子父类,多个派生类,三个可override的方法. 第一次需求变更 我们要会飞的鸭子!!!!! 所以我们做了如下的更改: 父类加了fly方法,嗯,所有的鸭子都会飞了,需求实现! 问题发生了,因为不是所有的鸭子都会飞 我们可以在派生类中把父类的fly方法中的内容覆盖掉,那么这个鸭子就不会飞了! 那么问题又来了,如果再出现几个新型鸭子都不会飞,是不是每个都得覆盖一遍fly方法啊???? 也许,可以用接口? 把每个方法都做成…
1.什么是模块? 指在程序设计中,为完成某一功能所需的一段程序或子程序:或指能由编译程序.装配程序等处理的独立程序单位:或指大型软件系统的一部分. ----<百度百科> 2.JavaScript缺乏模块机制. -> 薄弱的JavaScript规范: (1)没有模块系统: (2)标准库较少(对于I/O流,文件系统等常见需求没有标准API): (3)没有标准接口(没有Web服务器或数据库之类的标准统一接口): (4)缺乏包管理系统(使JavaScript应用中基本没有自动加载和安装依赖的能力…
1. Node的官方网站: http://nodejs.org 2. Node的缘起: Ryan Dahl 打算设计一个高性能的Web服务器. Ryan Dahl 认为设计高性能Web服务器的要点在于: (1)事件驱动 (2)非阻塞I/O (what? && why?) Ryan Dahl 选择使用JavaScript作为该服务器的实现语言,起名为Node. *为什么是JavaScript? (1)高性能 (2)符合事件驱动 (3)没有历史包袱 3. Node的特点 (1)保留前端浏览器J…
本文结合 Vue 源码进行学习 学习时,根据 github 上 Vue 项目的 package.json 文件,可知版本为 2.6.10 解析器 一.解析器的作用 解析器的作用就是将模版解析成 AST(抽象语法树) 在 Vue 中,解析 template 里面的 DOM 元素转换出来的 AST,是一个 Javascript 对象 该 AST 是使用 JavaScript 中的对象来描述一个节点 一个对象表示一个节点,对象中的属性用来保存节点所需的各种数据 parent 属性用来保存父节点的描述对…
        本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节号而非页码.相同的情况适合于"龙书"第二版. 上一期的地址: DX 11游戏编程学习笔记之7  这一期我们专门来研究第6章的习题. 尽管数目比較多,可是大部分还是非常easy的.注意我说的是"大部分"! 习题解答: =====================…
/********************************************************************************** 发布日期:2017-11-13 14:01:16* 进度:* 作者:LuoTian* 备注:运行时类型识别*********************************************************************************/ 这是读<深入浅出>做的笔记,书本程序是对MFC框架的仿真,…
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数学基础. 第五章:利用简单的顶点/片元着色器来实现辅助技巧. 第六章:基本光照模型. 第七章:法线纹理.遮罩纹理等基础纹理. 第八章:透明度测试和透明度混合. 第九章:复杂光照实现. 第十章:高级纹理(立方体纹理等). 第十一章:纹理动画.顶点动画. 第十二章:屏幕特效. 第十三章:深度纹理. 第十四章:非真…
1. 本章主要目的:从MFC程序代码中检验出一个Windows程序原本该有的程序进入点(WinMain).窗口类注册(RegisterClass).窗口产生(CreateWindow).消息循环(Message Loop).窗口函数(Window Procedure)等等操作.抽丝剥茧,彻底理解一个MFC程序的诞生与结束,以及生命过程. 2. 熟记MFC类的层次结构: 3. CWinApp和CFrameWnd: (1)CWinApp(AFXWIN.H中声明)——取代WinMain的地位. 注:C…
这份笔记是我2013年下半年以来读“The Art of Multiprocessor Programming”这本书的读书笔记.目前有关共享内存并发同步相关的书籍并不多,但是学术文献却不少,跨越的时间范围也非常长,说明人们一直在做出努力.这本书是这个领域的好书,作为一本好书,它总结了这个领域自发展以来的大量重要成果,介绍了共享内存同步的基本理论,并介绍了大量并发算法和数据结构(主要是无锁算法),包括并发队列.栈.链表.计数器.排序网络.散列.跳表.优先队列等.更为重要的是,本书的作者之一Mau…
1.首先MFC程序需要哪些函数库? Windows C Runtime函数库 LIBC.LIB       C Runtime函数库的静态链接版本 MSVCRT.LIB     C Runtime函数库的动态链接版本 MSVCRTD.LIB      ‘D’表示使用于Debug方式 DLL Import函数库:GDI32.LIB.USER32.LIB.KERNEL32.LIB… MFC函数库:MFC42.LIB.MFC42D.LIB.MFCS42.LIB.MFCS42D.LIB.MFCN42D.…