自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

转载 我在城市快节奏中的慢生活

1. 作息 我晚上睡觉一般是10点过,有时候可能11点过,偶尔9点过。早上起床有三个时间点:5:30,7:30,8:30。 05:30——起床 05:40——第一餐 05:50——出门 06:10——到达操场,开始锻炼(活动关节,赤脚慢跑热身,全身静态拉伸) 07:00——结束锻炼,回家 07:50——第二餐 08:30——到达公司...

2013-10-15 12:02:00 142

转载 任意类型对象Any

一个对象可以是任意类型,类似于同台语言的变量any.h:/* * any.h * * Created on: 2012-3-31 * Author: vivence */#ifndef ANY_H_#define ANY_H_#include <utility>namespace ghost{class Any{ class HolderBase...

2012-03-31 16:44:00 151

转载 保罗万象的对象——Variant

对一个对象设置其可容纳的多种类型通过类型对对象进行Set和Get,类型之间互不影响,一个类型只能又一个值variant.h/* * variant.h * * Created on: 2012-3-9 * Author: vivence */#ifndef VARIANT_H_#define VARIANT_H_namespace ghost{template...

2012-03-09 10:43:00 137

转载 小对象内存池——减少内存碎片

根据不同的块大小来划分不同的内存块链形成内存池组每个链节点(也称为块)容纳一个对象,是内存分配的最小单位,其大小为sizeof(long)的2的正整数次幂实现中限制了块大小最大值以及在一个链中块个数最大值利用了free block来存储下一个free_block地址,节约了free block链的存储空间memory_pool_base.h:/* * memory...

2012-03-09 10:33:00 131

转载 AVL树(改)

分离了二叉树在控制台的打印实现没有对节点的分配和释放进行抽象BinaryTree.h#ifndef BINARY_TREE_H#define BINARY_TREE_H#include <cassert>#ifdef _PRINT#include <vector>#include <memory>#include <func...

2011-11-25 16:19:00 98

转载 二叉堆

BinaryHeap.h文件#ifndef BINARY_HEAP_H#define BINARY_HEAP_Hnamespace ghost{template<typename A>void MinHeapShiftUp(A& array, const size_t size, size_t n/*umber(not index)*/...

2011-11-25 15:38:00 59

转载 关于对程序员层次划分的问题,口水口水

最近转到新的领域进行开发,正在学习和摸索的过程中,也就少有来更新博客了。不过平常有一点点空闲时间还是会关注一些同行的文章,也常常看到一些关于对程序员层次划分的问题,今天也想就此喷点我自己的口水。我见到的对程序员进行层次划分的文章通常是:XX语言程序员等级,XX技术开发人员层次等。这些文章的作者通常都将自己放在一个“上帝”的角度去描述,说XX语言(技术)程序员(开发人员)可以分为多少个...

2011-08-07 16:00:00 145

转载 AVL树

AVLTree.h文件#ifndef AVL_TREE_H#define AVL_TREE_H#include <cassert>#include <algorithm>#ifdef _PRINT#include <vector>#include <iostream>#include <...

2011-06-17 14:53:00 75

转载 一步一步实现自己的模拟控件(9)——消息处理

这次我们将要给Widget增加一些状态,并使其能够接受出消息处理扩展,测试工程中实现了一个按钮的消息处理扩展。Widget状态:之前的控件只是绘制了一个边框,并且总是会在窗口中显示。实际上我们往往会希望能够让某个控件显示或者隐藏、可用或者不可用等等,那么控件应该具有能够标识这些状态的属性,于是我们给Widget增加了状态概念。// 状态相关void AddStates(s...

2011-04-24 10:48:00 91

转载 一步一步实现自己的模拟控件(8)——重构

模拟控件已经出了雏形,是应该重构一下了。新概念:其实说是新概念也不尽然,只是在这几步的实现中可以发现,这个模拟控件框架中有两个大的概念:容器和控件。我们一直一来都说的是容器窗口,但是其实这是个可以上升的概念。容器容纳一个控件体系,也就是关联一个根控件,那么它就有点类似于我们的根控件了。但是容器由必须实现和具体窗口和控件的交互,所以我们不能简单的将根控件作为容器。并且对于某些特殊的...

2011-04-19 20:06:00 93

转载 一步一步实现自己的模拟控件(7)——可扩展布局子控件

可扩展:要使得我们的控件具备一定的可扩展性,那么必定会产生控件之外的对象作为扩展,并且这个对象对于控件来说是可插入可移除的。用于扩展的对象和控件之间应该具备一定的关系,例如:1-1,1-n,n-n等。我们将这样的对象关系抽象了出来,称之为对象关系。对象关系:一个对象可能允许单个对象对其进行关联,也可能允许多个对象对其进行关联,甚至可能即允许多个对象进行关联,但却对某些类型的对...

2011-04-12 21:17:00 74

转载 一步一步实现自己的模拟控件(6)——控件树及控件区域

控件树一步一步实现自己的模拟控件(1)中的图上我们可以看到,我们的控件体系其实就是一个控件树。每一个窗口关联一个根控件,所有控件都在这个根控件之下,父控件包容并管理子控件,那么我们的Widget就应该是一个树结点。一个树结点至少有对Parent和Chilren的设置和访问接口:void SetParent(Widget* const pNewParent);Widget*...

2011-04-09 19:05:00 88

转载 一步一步实现自己的模拟控件(5)——隐藏类

隐藏驱动类:为了让用户有更简单的使用接口,我们需要把不必要的东西进行一定的隐藏。前面我就提到WidgetDriver对于用户来说是不关心的东西,那么我们就将其进行隐藏。  方案1:  将WidgetDriver放到Widget.cpp中,这样的隐藏方式是最严密的,对于用户来说完全看不到WidgetDriver。但是随着我们的实现膨胀,这会让我们的Widget.cpp变得非常臃...

2011-04-07 20:55:00 62

转载 一步一步实现自己的模拟控件(4)——根控件

窗口、控件驱动、根控件之间的关系前面我们已经说了,一个窗口只能关联一个控件驱动,一个控件驱动也同样对应一个根控件。为什么呢?因为我们的驱动需要作用于一个控件体系,一个控件体系具有一个根控件,这个根控件管理了整个窗口的客户区。这样我们才能在这个根控件下创建任意的控件,并活动在窗口客户区。生命周期控制基于上面的关系,控件驱动和根控件的生命息息相关,那么我们让其相互制约。既然是...

2011-04-06 21:21:00 85

转载 序列化

为何需要序列化我们常常需要将对象持久化或者在通信中传递对象,这时我们就会使用到序列化。C++中的序列化对于C++这样的静态语言来说,序列化往往都很不方便,它对于类型转换非常敏感和严格,所以说想要对C++对象进行序列化那必须对每个序列化的对象进行针对性编码。C++中的反序列化因为C++类型是在编译时决定的,而序列化是运行时行为,反序列化需要生成的对象类型必须在编译时决定...

2011-04-04 19:58:00 76

转载 一步一步实现自己的模拟控件(3)——Widget驱动

前面我们利用现有的微软ATL实现的thunk已经为我们截获窗口消息做好了准备,此刻我们应该编写我们的Widget驱动的初步实现了。利用thunk对窗口消息过程进行子类化,那么窗口消息就会先流入到我们的Widget驱动对象,Widget驱动对象负责将消息传递给消息过滤器。现在我们的消息过滤器还未实现,于是我们打印了进入消息过滤器的消息ID值以观察消息的流动情况。以下是我们的Widg...

2011-04-03 13:56:00 69

转载 一步一步实现自己的模拟控件(2)——窗口过程thunk

实现Window Proc Thunk:就好像水泵一样,我们的系统也需要一个泵——消息泵,也就是前面图上的Message Driver。这个Driver的可以依靠一个Window Proc Thunk来截获窗口消息,那么我们得先实现一个Window Proc Thunk。这里我选择的方法是拿现成的代码来用,微软ATL框架中提供有thunk的实现,我将其提取出来稍加修改就能为我们所...

2011-04-03 13:55:00 102

转载 一步一步实现自己的模拟控件(1)——消息驱动设计

目标:实现一套windows下简单且可扩展的抽象模拟控件内核。抽象模拟控件:我们将windows系统的窗口客户区作为模拟控件的容器,每个模拟控件就是其中的一个抽象矩形区域,并且能够模拟控件进行递归嵌套。控件支持基本的鼠标和键盘消息,能够在窗口大小改变时进行布局。分析:因为我们要实现的是抽象的模拟控件,不是真正的窗口控件,那么就需要将窗口消息适时派发到相应控件。下面以一...

2011-04-03 13:53:00 138

转载 ATL COM初探(1)

我没有看过任何的COM书籍,以下总结均是我个人在ATL框架下的实验所得,如有错误望指正。目前的实验都是单进程中的,至于跨进程的实验还未进行。Apartment:这是一个抽象的概念,我简单的将其理解为作用域(COM对象的生存空间)。可以分为Single-Threaded Apartment(STA)和Multi-Threaded Apartment(MTA),至于Neutral A...

2011-03-11 11:12:00 85

转载 习惯

床头时刻准备着纸和笔,以便随时捕捉在梦中的灵感,往往这种灵感稍纵即逝,并且在清醒时几乎不可重现。早上工作解决最棘手的问题,这段时间思维最清晰,效率最高。下午工作重在发现和记录问题,待明日早上解决。晚上休息为主,将每天的状态都维持在较高的水准。转载于:https://www.cnblogs.com/EvilGhost/archive/2011/03/10/Custo...

2011-03-10 17:00:00 82

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除