深度理解:多个auto_ptr同时引用同一个资源对象下的释放问题及赋值问题
首先说一句,auto_ptr已经在C++ 11中已经标注为Deprecated,也即你可以继续使用这玩意,但是在C++持续的演进中,这玩意将慢慢不被主流编译器支持。”Deprecated”,说白了,就是我们在将来可能不支持这个了,现在你可以继续使用,编译器也将继续可以编译通过,趁现在有时间,请尽早使用其他改进方法吧。
1. 多个auto_ptr引用同一个资源对象
下面看一段...
实战经验:CRichEditCtrl的使用方法
RichEditCtrl是一款富文本编辑器控件,相对于CEdit来说,其功能更加强大。另外,它自带RTF格式文本的解析功能。今天就总结一下我在使用这款控件的一些经验。
1. 关于RichEditCtrl的版本
随着Windows每次版本的发布,RichEditCtrl的版本也在不断升级。从最初的1.0版本一直到目前最新的4.1版本。以下版本历史来自的MSDN:
Rich Edit version ...
深度理解:FindClose未调用导致的File内核对象的引用计数问题
应用程序启动后,不可避免的会使用到操作系统提供的文件系统API,比如CreateFile等。当我们有枚举文件或文件夹的需求时,会使用到系统提供的FindFirstFile/FindNextFile/FindClose函数族。
比如,如下的代码为枚举指定路径下所有的文件夹和文件:
void EnumerateFiles(LPCTSTR path)
{
WIN32_FIND_DATA ...
实战经验:自定义函数在STL比较函数sort中的使用
STL库中有自带的排序函数族,今天就来讲讲其中比较常用的sort函数。
该函数可以对容器进行排序,比如如下的代码:
vector<int> vec;
vec.push_back(3);
vec.push_back(5);
vec.push_back(6);
vec.push_back(1);
sort(vec.begin(), vec.end());
经过上述sort...
实战经验:如何检测CMFCTabCtrl控件标签页切换事件
MFC库中经常会使用到的一个控件是Tab标签页控件,这个控件在展现多个平级数据集非常合适。
与控件对应的,是MFC库中的两个类:CMFCTabCtrl和CMFCBaseTabCtrl,其中CMFCTabCtrl继承自CMFCBaseTabCtrl,而CMFCBaseTabCtrl又继承自CWnd。
开发应用程序过程中会有一个需求:Tab标签页何时进行了切换?
下面介绍两个消息:
AFX_WM_CH...
实战经验:TVN_SELCHANGED和TVN_SELCHANGING通知消息的应用
在使用CTreeCtrl控件时,有两个通知消息我们会经常用到,分别是:
TVN_SELCHANGING: 这个消息表示树结点即将从一个切换至另一个,但是请注意,切换只是即将开始,还没有真正进行。
TVN_SELCHANGED: 这个消息表示树结点已经完成从一个切换到另一个,从界面效果来看,当前选中的树结点的高亮色从一个变更到了另一个了。
TVN_SELCHANGING消息应用:
对于...
小技巧:使用appcmd来自动化部署IIS网站
在工作中,时常会花费宝贵的时间做重复的事情,比如使用IIS图形界面部署一个新网站。今天我们就来聊一下如何使用appcmd这一工具来简化这个工作。
appcmd,是一个微软操作系统自带的命令行工具,位于系统的C:\windows\system32\inetsrv路径下(对于Win7 32位操作系统而言)。我们可以使用“appcmd /?”这一指令查看此工具的基本用法:
===============...
实战经验:如何在Linux上编译静态链接程序
有时候需要在Linux上编译静态链接C库的程序,这样就可以将编译出来的程序直接拷贝到其他Linux系统上直接运行,而无需担心目标系统的C库版本是否兼容。
具体方法如下:
首先安装C库:yum install glibc-static
編譯:
OBJS = main.o
CC = gcc
CFLAGS = -Wall -O -g -m32 -march=i386 -mtune=i386 -s...
深度理解:Linux设备驱动移植简介
Linux 发行版
Linux是类Unix操作系统的一个分支,最初是由Linus于1991年为基于Intel 80386的IBM兼容机开发的。
Linux只是一个内核的名称,不同于我们平时所说的的CentOS,Ubuntu等发行版本。
发行版本除了内核还包括各种外部应用程序以方便用户使用和管理操作系统。
设备驱动的作用
简单的设备驱动层次
Linux内核、驱动程...