
C++
文章平均质量分 66
linzhengqun
目前从事网游客户端开发
展开
-
MFC-命令分派
MFC的命令大体上由两类界面元素引发,一种是菜单项,另一种是如按钮,复选框等的通用控件。从消息来看,其实就是处理WM_COMMAND消息。尽管命令消息的进入点仍然是CWnd::OnWndMsg,不过MFC让它走了另一条路,即OnCommand。 让命令消息作另外处理是有原因的,比如说菜单命令,往往处理它的并不是FrameWnd,而是View,Document或其他的类原创 2007-12-04 12:28:00 · 3300 阅读 · 0 评论 -
龟速的malloc和神速的FastMM
由于在Delphi项目中,要频繁创建和释放大量小对象,因此担心有效率问题,于是打于GetMem.inc看看,发现FastMM对于小块内存作了很多工作,它预置了一组不同大小的内存池,当要创建一块内存时,FastMM找到大小最相近的内存池分配之,内存释放后回收到池中。这样的做法虽有小量内存浪费,但效率却是大大提高。我决定做一个测试,看看效率研究如何: const cSize: Integer原创 2011-12-02 17:24:52 · 2531 阅读 · 2 评论 -
窗口过程封装的一些实现
-----------------------------------------------------------------------------------------------------------------作者: colin微博: http://weibo.com/jaccicagaga-----------------------------------原创 2011-06-13 04:03:00 · 4336 阅读 · 7 评论 -
用C++实现属性
<br />Delphi和C#的类都提供了“属性”的概念,使得Getter和Setter的方法可以像访问成员一样简单,如下面的Delphi代码:TMyClass =class<br />private<br /> FValue: Integer;<br /> funcation GetValue: Integer;<br /> procedure SetValue(value: Integer);<br />public<br /> property Value: Integer原创 2010-11-21 01:02:00 · 2526 阅读 · 0 评论 -
实用C++函数:取当前模块句柄
<br />当前模块的句柄在程序进入点可以获得,一般做法是保存为一个全局变量,以后使用这个全局变量即可。但有时在写一些比较通用的代码时刚好要用到模块句柄,如果还去访问这个全局变量就破坏了代码的通用性。<br />下面函数可以取得当前模块的句柄,无须保存,随调随得:<br />/* 通过一个地址取模块句柄*/inline HMODULE ModuleHandleByAddr(const void* ptrAddr){ MEMORY_BASIC_INFORMATION info; ::V原创 2010-11-29 01:26:00 · 2971 阅读 · 2 评论 -
Google Chrome 构建指南
首先,配置开发环境:安装VS2005,全部安装,不要只选VC++。安装VS2005 SP1,根椐VS的语言选择安装,这里给出的链接是中文版的。安装Windows SDK 2008,安装完后,执行:开始|所有程序|microsoft windows SDK v6.1|Visual Studio Registration|Windows SDK Configuration tool 将最新的SDK与V原创 2009-01-02 23:05:00 · 2632 阅读 · 1 评论 -
Windows消息
Windows消息从大四开始学习Windows编程,至今已有三年时间,回顾起来,觉得这个学习过程其实就是对消息的理解过程。最初消息给我的感觉就是一种事件通知,而窗口是通知的目的地。当键盘鼠标或者窗口的某些状态改变时,系统包装了一个消息结构,并“找到”处理消息的窗口“发送或投递”给它。有了这一层理解,就知道要在特定的时机做一些特定的事情:WM_CREATE创建所有子控件,WM_SIZE调整子原创 2008-03-30 16:08:00 · 3009 阅读 · 0 评论 -
MFC-GDI绘制
最好的GDI入门教程是《Window程序设计》的第五章,如果你没有任何GDI基础,最好精读这一章,因为本文并不会介绍GDI的方方面面,事实上这也是不可能完成的任务。我只将以前学习GDI时遇到的几个难点拿出来讲讲。GDI对象的用法GDI对象就是画笔,画刷,字体这类资源,以我的经验,GDI对象的管理是一件麻烦的事,如果操作不当,很容易引起GDI泄漏。Delphi用TPen,TBrush原创 2007-12-31 14:41:00 · 8248 阅读 · 3 评论 -
小巧可爱的MiniDraw
上文用于演示的程序名叫MiniDraw,也许你已有所察觉――这应该是一个画图程序。不错,我的实验品就是经典的画图程序,并且这几天我已经把它编写出来了。这是一个小巧可爱的画图程序,麻雀虽小,五脏俱全,屏幕截图如下: 从图中可以看出,每个图形就是一个对象,支持各种属性设置,以及鼠标拖拉。我将MiniDraw能做的事情列举了出来:l 存盘读盘原创 2007-12-27 22:20:00 · 4039 阅读 · 2 评论 -
MFC-文档视图
MDI程序 MiniDraw只有一个About对话框,这回要把它变成一个MDI程序,借助于文档视图的威力,并不需要花很大的力气。 MDI由4个类组成:主框架类,由CMDIFrameWnd派生而来,表示程序的MDI父窗口。子框架类,由CMDIChildWnd派生而来,表示程序的MDI子窗口。视图类,由CView派生而来,表示一个文档视图,内嵌于子窗口。原创 2007-12-17 10:04:00 · 8426 阅读 · 3 评论 -
MFC-RTTI
关于RTTI 正如侯杰所说,文档视图是MFC进化为应用程序框架的灵魂,不可否认,这是MFC最为精炒的设计,十多年前数据与表现分离的思想就被应用在这个框架之上。而在文档视图之下,支撑着它的是运行时类型信息(RTTI)。 RTTI允许程序在运行时刻获得类乃至普通类型的信息,这是怎么做到的,其实原理很简单,就是事先将这些信息保存为某种数据结构,保存的工作或由编译器帮你原创 2007-12-15 13:05:00 · 4371 阅读 · 1 评论 -
MFC-对话框与数据交换
对话框是非常重要的一种窗体,就我看过的应用,除了MDI程序,对话框比文档视图框架用得更多。原因大概有两个,首先对话框可以利用资源编辑器来编辑,这就有了一点快速开发的感觉,尽管比真正的快速开发弱得多;其次,对话框提供一种叫数据交换的方法,让控件与某种数据类型关联起来,比如Edit控件与CString变量关联,对CString变量的操作间接映射到Edit控件,这种方便性是不言而喻的。原创 2007-12-10 10:12:00 · 7143 阅读 · 3 评论 -
MFC-窗口封装
MFC对Window作了一层比较浅的封装,其创建过程基本与SDK差不多。它简化了窗口的注册,并将窗口过程与类关联起来;后者是比较重要的封装,它使消息能够分流给“类的窗口过程”,既而通过消息映射,才能到达各个处理函数。 使用传统的SDK来创建一个窗口有点繁琐,伪代码是这样的: if (RegisterClass(…)) {原创 2007-12-08 12:22:00 · 5752 阅读 · 0 评论 -
让C++使用极速的FastMM
由于malloc的低效,一直在寻找替换的方案,最后突发其想,封装一个FastMM的DLL作为C++的内存管理器;然后重载全局的new和delete操作符。如上方法执行之后,再跑原来的测试程序,效率果然与FastMM版本的一致了。我原来以为VC版STL的默认内存管理器,会有大量的优化,后来跟进去才发现,它也不过是用了new和delete,如果不重载,则最终是调用malloc的。如果要让STL也使用F原创 2011-12-06 13:47:46 · 2590 阅读 · 1 评论