- 博客(34)
- 收藏
- 关注
原创 wm_** & on_notify & on_notify_reflect
这几天用MFC做一个界面,以前很多东西一直没弄清楚,做的时候也很茫然。比如windows消息,命令消息,通告消息的区别,消息的传递,消息反射的实现等等。昨天看了一下MSDN,今天有实际操作了一下,总算有了一些了解。对于一个控件来说,比如一个listctrl,当DBCLICK发生时,如果有WM_DBCLICK处理程序,则该函数处理,其他包括NM_**,NM_**_REFLECT都没有机会处理,如
2007-12-19 10:13:00 1714
转载 CString 操作指南
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括了大部分常见基本问题。这篇文章包括以下内容:
2007-12-13 16:08:00 496
转载 MFC内存泄露误报的情况
一.环境操作系统:Windows2003 serverIDE:vs2003 二.现象新建一个dll的空项目,加入mydll.h和mydll.cpp两个文件,内容如下:// mydll.h#ifndef _MYDLL_H_#define _MYDLL_H___declspec( dllexport ) void VoidFunc();#endif
2007-12-11 12:02:00 1305
转载 CMap 用法
如何声明CMap许多人对Cmap的声明模式CMap感到迷惑,为什么不用CMap呢?实际上,CMap中的的数据最终会是CPair,而CPair内部是(KEY,VALUE)。因此,CMap其实存储的是KEY,而非ARG_KEY。然而,如果你查看MFC的源代码,几乎CMap所有的内部参数传递都是访问ARG_KEY和ARG_VALUE,因此,使用KEY&来代替ARG_KEY似乎是正确的,除了在这些
2007-12-06 16:08:00 5341 1
原创 模版元编程,我记住了
几天因为工作关系,接触到了一点模版元编程知识,有点难度,ms看懂了。不过据说要先看看 深入剖析stl 和 modern c++ programming 之后再看要好一些。好的,我记下了。
2007-11-21 14:14:00 856 2
转载 SEH&&try catch
C++ 中的异常处理机制是建立在 Windows 平台上的 SEH 机制之上,所以 SEH 当然可以在 C++ 程序中使用。不过“阿愚”多次强调过,我们平常一般狭义上的 SEH 都是指 try-except 和 try-finally 异常机制,而它们是给 C 语言( VC 环境)编写 windows driver 而设计的,所以 SEH 主要应该在 C 程序中被使用,而 C++ 程序则应该使用
2007-11-14 16:45:00 669
原创 在VS.NET IDE中集成VSS的常见问题
VSS与VS.NET IDE的集成会带来哪些好处?好处:(1)可直接在IDE中CheckOut/CheckIn。(2)在一台新机器上第一次打开Solution时,可为Web Project自动创建IIS虚拟目录。(3)VS.NET自动判断不该添加到VSS中的文件,例如suo,*.vbproj.user等,避免手工添加这些文件之后导致个人环境互相干扰的问题。(4)文件更名特别方便
2007-11-12 11:49:00 2416
原创 VC++的工程文件说明
dsw, aps, clw, plg这些文件都可以删除。只保留 H,C,CPP,DSP,RC,剩余文件去除只读属性,其余全部删除。然后打开DSP 有提示选 YES,就可以了*.dsp(DeveloperStudio Project):是VC++的工程配置文件,比如说你的工程包含哪个文件,你的编译选项是什么等等,编译的时候是按照.dsp的配置来的。*.dsw(DeveloperStudio
2007-11-12 11:15:00 877
原创 afx.h
Afx前缀是微软MFC一个小组的名称简写,并没有别的意义。 MFC的很多代码,包括全局函数名、宏、头文件名都使用了"Afx"。 Afx*.h是一组MFC的核心头文件,比如: afxwin.h 定义MFC的核心和标准组件 afxext.h 定义MFC的扩展 afxdisp.h 是MFC自动化支持的类定义头文件 afxdb.h 是MFC的ODBC类封装MFC中用到的类基本上都是在afxwin.h中
2007-10-30 17:23:00 1365
原创 stdafx.h
Standard Application Fram Extend 没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。 Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。 为避免这种浪费,AppW
2007-10-30 17:20:00 531
转载 Debug和Release有什么区别
1。Debug和Release有什么区别,为什么要使用Release版本! 2。怎么把Debug转成Release 刚学VC,请赐教! --------------------------------------------------------------- 转载: Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看
2007-10-30 16:22:00 575
转载 用new分配对象失败时,会不会抛出异常
要知道new在Visual C++中已经重载过了!Visual C++的new会抛出异常,而C++意义上的new不会,需要自己抛出异常! MFC的异常处理可以转换为C++的异常是指大写的MFC异常处理宏可以用小写的C++异常处理替代,这与new是否抛出异常无关! VC中的new 内部调用了C++的throw关键字抛出异常!这关键在于VC实现C++的new的机制!
2007-10-30 15:50:00 1811
原创 我也不想这样
本来以为这周会忙一些,能够有一些任务来做,结果企划那边又出了岔子,说是方案还没有确定。OMG,我来公司两个月多了,一直都在看代码,看书,总也没有任务做,心里总是空落落的。我们大家还都这么年轻,整天这样不干活,怎么能提高,怎么能进步。我是一个爱玩的人,但现在这种过法,总让我觉得不实在啊。希望自己早日蜕变,真正能够进入这个行业,成为一名成熟的技术人员。
2007-10-24 17:17:00 541
原创 今天打魔兽又输了&&投资
rt,有一点点郁闷,还好现在比较会调整心态,关了游戏就可以正常工作了。 今天看了一篇博文,讲了财富是哪里来的问题,以及他的一些看法,很受震动,以后要多多学习,看来理财不只是我以前想的买买基金就完了。
2007-10-17 13:55:00 538
原创 我也说说房价
今天在新浪上随手点进了任志强的博客,看了一篇文章,是抨击国家提高第二套住房的首付。其实我觉得也没有什么新意,因为任总一般都是和国家唱反调的。文章我就不说了,我觉得比较好的是下边一个人的评论,复制如下: 充分竞争有利于扩大供给降低价格,是非常初级的道理,以行政手段提高行业门槛、提高交易成本,会推动价格上涨是显而易见的。要降低房价,政府应该做的是做好土地供应计划,予以宣传并予以落实。可是,有多
2007-09-28 09:58:00 812
原创 最近心里有点虚
来这边马上一个月了,最近这几天,总感觉不踏实。也没什么别的原因,主要是这一个月了,主管也没有给我安排任务,只是让我看书学习。哎,不清楚自己水平到底行不行啊。不过仔细看看我们部门,最近确实没有什么新项目。一部分人在支持春秋那边,这个工作不可能交给我这个新人来做,一部分人在做工具,都已经做好了,只是测试,改bug。还有两个人在做DX10的移植工作,基本上也结束了,我都插不进去啊。最近这两个星期
2007-09-13 08:59:00 618
转载 C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do something in
2007-09-12 15:34:00 538
原创 生活只有经历了才知道是不是想要的
来成都半年多了,现在的生活似乎才是我想要的。周一到周五认真工作,周六周日认真happy。最重要的是有一个爱我的和我爱的人跟我一起工作,一起生活。谢谢你,给了我想要的生活。
2007-09-10 15:56:00 597
转载 组合类的构造函数
//定义点point类 class point { public: point(int xx=0,int yy=0){x=xx;y=yy;} //构造函数 point(point &p); //拷贝构造函数 int getx(){return x;} //获得点的X坐标 int gety(){return y;} private: int x,y; }; point::point(point &
2007-09-05 15:53:00 1943 1
转载 一个快速的内存分配池
//注释s_pCurrent = *((void **)s_pCurrent);这一句的意思是,将s_pCurrent所指的地址上存储的值赋给s_pCurrent 自身,因为“我们令每一个未使用的内存块的头部都保存一个指针,让它指向下一个未使用的内存块”,因此,实现了地址的分配。 对于现代的游戏引擎来说,为了提高性能和有效的管理内存,需要使用各种各样的内存分配模型,内存池作为一种有效的
2007-09-05 13:42:00 1070
转载 3D引擎场景管理
我认为对于一个3D引擎来说,最核心的部分应该算是场景组织(scene graph)了,如果这部分你都没有设计好, 那么就别指望开发一个成熟的3D引擎了。为了开发3d引擎,所以我首先就研究这方面的内容,对一个3D的场景来说,又很多的物体,最简单的组织方法就是把他们用一个List连接起来,然后在绘制没一帧的时候依次送入渲染器(render)进行处理。 这显然不是一个很有效的方法,当处理
2007-09-03 15:18:00 2281
原创 游戏引擎介绍2
游戏引擎介绍2第7部份: 网络和连线游戏环境网络游戏 我记得一些年前坐在GDC(游戏开发者大会)听负责开发X-Wing Vs TIE Fighter的家伙们题为“淹没在Internet” 的演讲,全是关于让网络游戏实时地在Internet上工作的东西。他们选择那个题目是多么的正确啊。当它开始处理数据包的丢失,乱序,潜伏(一个数据包发送到它的目的地所花的时间)等等时,它确实淹没了。然而它是可能
2007-08-31 17:21:00 1401
转载 游戏引擎介绍1
游戏引擎介绍1原文作者:Jake Simpson译者: 向海Email:GameWorldChina@myway.com ------------------------------------------------------------第1部分: 游戏引擎介绍, 渲染和构造3D世界介绍 自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游
2007-08-31 17:19:00 3607
转载 epoll简介
名词解释:man epoll之后,得到如下结果:NAME epoll - I/O event notification facilitySYNOPSIS #include DESCRIPTION epoll is a variant of poll(2) that can be used either as Edge or Level
2007-08-28 11:41:00 2252
转载 Quake III中不可思议的求解平方根实现方法
任何一个3D引擎都是通过其内部的数学模型和实现工具来展现它的力量与速度的,and trust John Carmack of ID software for using really good hacks. 结果,Quake III中使用了一个非常有意思的技巧来计算平方根倒数(inverse square root) 前言ID software最近发布了它的带有Gpl许可证的Quake III引擎
2007-08-24 15:17:00 1977
转载 网游服务端结构设计
.概述LoginServer GameServer服务端主体分为LoginServer和GameServer, LoginServer做帐户认证, GameServer做游戏主逻辑,中间也可以加一个CharServer啦, 做人物管理, 新建删除人物之类的, 也可以并到GameServer一起, LoginServer和CharServer都比较简单, 略过.通过LoginServer的验证后
2007-08-24 14:58:00 1546 1
原创 关于构造函数和析构函数
今天看 c++primer 3rd,构造和析构函数时,对以前一些想不明白的问题,突然有了点想法。1、为什么构造函数可以有多个,而析构函数只能有一个?因为析构函数的作用就是释放资源,它不知道自己是由哪一个构造函数创建的,因此,也就没有参数,所以只能有一个,而不能被重载。这在原理上也是讲得通的,一个对象,产生的时候可以有多种方法,但结束只有一种,因为没有信息保存它是如何产生的。
2007-08-23 11:25:00 510
转载 STL中的函数对象(Funciont Objects)
概要一个函数对象(Function Object或者Functor)简单的说就是能够以函数调用的形式出现的任何东西。一个普通的函数显然就是一个函数对象,函数指针也是,更一般的,一个定义了operator()的Class也是。描述基本的函数对象的概念有Generator,Unary Function(一元函数),Binary Function(二元函数):他们各自表示能以F(),F(x),F(x
2007-08-22 11:46:00 598
转载 线程的同步
虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线
2007-08-21 14:00:00 464
转载 静态成员函数
静态成员函数有以下特点: 可以通过class::function方式调用,不用生成实例 不能访问非静态的成员变量 静态成员函数是类的一部分,而非对象的一部分。 非静态成员函数调用时还隐式的传进一个this指针,静态成员函数不传this指针。静态成员函数一般情况下只能访问静态成员变量,因为不接受隐含的this指针。 另外作为类的静态成员函数,不用声明对象,
2007-08-21 09:26:00 3226
原创 关于虚函数的体会
今天阅读服务器端代码,发现Thread.cpp 和 NetThread.cpp 之间的继承关系很有意思。Thread中run函数通过设置某一参数为*this,很方便的实现了对子类对象的访问。
2007-08-20 17:43:00 566
转载 signal函数语义
signal函数语义- - unix信号signal定义#include void (*signal(int signo,void(*fun)(int)))(int)说明:1 返回值是一个 void (*)(int)类型的函数指针 2 signo是信号名 3 第二个参数为该信
2007-08-20 13:56:00 1274
转载 钩子(hook)
钩子程序是在内存中可以不断的在内存中拦截你要控制设备的消息并且可以对该消息进行处理过滤。钩子是WINDOWS留给我们的后门,比如你想控制键盘,在DOS时代很简单通过INT即可,而WINDOWS时代不允许我们直接操作硬件;由于WINDOWS是消息驱动,所以我们可以拦截键盘消息以达到控制键盘的目的。但是控制自己进程的消息固然很简单,要控制所有进程消息要利用钩子了。将钩子函数放在DLL中,所有的有关键盘
2007-08-20 09:47:00 649
转载 关于回调函数(ZT)
调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。 CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后从堆栈中弹出现场地址,以便自动返回。借堆栈保护现场真是一项绝妙的发明,它使调用者和被调者可以互不相识,于是才有了后来的函数和构件,使吾辈编程者如此轻松愉快。若评选对人类影响最大之发明,在
2007-08-20 09:45:00 542
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人