自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 命令行自动提升管理员权限

通过快捷方式在命令行自动提升到管理员权限

2015-12-18 13:37:14 7891

原创 鼠标相关事件触发时间与顺序

为了彻底弄清鼠标相关事件触发时间与顺序,写了个程序输出鼠标操作信息,这里做个记录,

2014-05-23 09:39:20 2750

原创 CDHtmlDialog类OnBeforeNavigate2取消页面浏览后页面元素事件失效问题的解决方法

在基于CDHtmlDialog类的对话框使用OnBeforeNavigate2已经有很多人给出了方法http://alee201.blog.163.com/blog/static/277908512007313113733617/http://bbs.csdn.net/topics/390411927?page=1但是正如第二个链接中4楼的人提出的问题”该方法我早就试过,却是起作用,但

2013-12-06 10:58:49 2648

原创 关于_beginthreadex与AfxbeginThread

比较CreateThread,_beginthreadex与AfxbeginThread的文章已经很多了,介绍的已经很详细,其中比较优秀的有:http://kulong0105.blog.163.com/blog/static/174406191201198104050236/但是一直有个疑问如果在线程中既可能使用MFC库,也可能使用C Run-time Library,这时应该使

2013-11-12 15:57:01 4386 2

原创 Delphi中多线程同步过程Synchronize的一些说明

在windows原生应用程序开发中,经常伴随多线程的使用,多线程开发很简单,难点就是在于线程的同步,在Delphi中提供了VC中不具备的一个过程Synchronize,使用起来非常方便,解决了很多VC开发中碰到的常见问题,但是在看了很多Delphi代码后,发现很多人对于Synchronize的理解还是有问题的,不能很好地正确使用Synchronize过程,本文对Synchronize过程的使用提出

2013-08-21 11:41:11 19837

转载 C++ 中dynamic_cast<>的使用方法

/*这是从网上摘下的例子,主要讲述了 dynamic_cast/* 作用:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理,        即会作一定的判断。        对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针;        对引用进行dynamic_c

2011-12-15 14:19:02 55667 10

原创 按需释放单例模型的改进

在《C++中的单例模式及按需释放模型》系列文中已经对按需释放单例模型进行了详细描述,其中也提到了是模仿auto_ptr引入单例类实例获取器来控制单例类实例的生命周期,实现按需施放的,但是没有给出运算符重载的版本,本文对实例获取器给出运算符重载版本,使单例模型使用起来更加容易方便。不多说,直接给出单例类实例获取器的代码 template class Singleton_ptr { p

2011-12-05 13:56:35 1814

原创 C++中的单例模式及按需释放模型(五)

四、多线程安全的通用单例类实例获取器例子工程的名称是SingletonThreadSafeInstanceGetter。刚开始写本文时,本没有想实现多线程版本,主观上以为同通常的单例模式一样,多个多线程同步就可以了,很简单,让读者自己开发就好了,不过后来真正去思考时发现不是那么简单的,感觉对此还是很有介绍的必要。1、单例类实例与单例类实例获取器实例的对应关系在实现多线程安全的通用单

2011-11-30 17:20:17 3142

原创 C++中的单例模式及按需释放模型(四)

三、使用模板类实现的通用单例类实例获取器例子工程的名称是GeneralFreeInstanceGetter。1、通用的模板类单例类实例获取器功能同前文描述的单例类获取器一样,我们改成模板类方式,把单例类作为模板参数,以便变成通用的单例类实例获取器。模板类的定义与实现namespace dpex{ template class SingletonInstanceGette

2011-11-29 17:35:22 2047 5

原创 C++中的单例模式及按需释放模型(三)

二、使用辅助类实现按需释放的单例模式例子工程的名称是SingleClassFreeInstanceGetter。1、引入辅助类为什么会想到引入辅助类来实现单例,这个辅助类要实现什么样的功能来辅助,要回答这两个问题,我们还是要先分析前文中要求单例类具有的特点,简单来讲就是2个特点,第一是要单例,第二是要具有生命周期,不能创建了就不管,关于单例研究的已经很多了,没有多少进一步处理的空间了,

2011-11-29 14:07:16 2640

原创 C++中的单例模式及按需释放模型(二)

一、在C++中实现单例模式例子工程的名称是Singleton。1、模拟C#的方法实现单例模式本人开始学习设计模式也是先看的C#语言描述的,后来要在C++上实现,参考了网上相关文章,使用一个静态类成员的指针来实现单例模式,代码如下:SingletonSimulateGC类定义class SingletonSimulateGC{private: SingletonSimula

2011-11-28 17:14:32 4243 2

原创 C++中的单例模式及按需释放模型(一)

关键字:C++、单例模式、友元、模板、多线程、对象生命周期 单例模式是设计模式中最简单最容易理解的模式之一,实用方便,项目设计开发中会被经常使用,但是不知道读者有没有考虑过这个问题,单例模式实例什么时候被释放,读者有兴趣可以仔细分析下,按照目前通常方法实现的单例模式都是直到系统退出的时候才释放的,甚至是有垃圾回收机制的C#上也是这样的,系统切换了功能模块还存在大量的这个模块根本不使用的单例

2011-11-28 16:19:21 6302

原创 解决office一些文档不能显示在win7任务栏最近列表中的方法

win7任务栏有个功能非常好用,就是在任务栏固定某个应用程序,此程序的任务栏右键菜单可以直接显示此应用程序最近使用的文件,并且可以把某些文件固定在右键菜单的文档列表中。使用win7有一年多了,这个功能用着很爽,但是偶尔会碰到一个问题,就是最近使用的文件虽然能出现在excel自己最近使用的文件列表中,却可能不出现在任务栏右键菜单上,虽然这个问题出现概率很低,但是出现了就很麻烦,后来经过多次测试终

2011-11-28 12:46:21 5100 2

原创 在C++中模拟委托事件的方法(六)

最后我们针对这4种比较可行的模拟事件方法进行一下评价,评价的标准主要考虑以下几个方面1、  是否可以只接收事件触发类的一部分事件2、  一个事件触发类是否支持多个事件接收类对象接收事件3、  事件处理函数是否可以使用保护或私有的访问权限,保证事件接收类的封装特性4、  书写方便程度与代码优雅度、简洁程度,对于这个的标准主要是看开发人员开发事件触发类(服务类)和事件接收类的代码简洁程

2011-11-22 13:11:52 1949 7

原创 在C++中模拟委托事件的方法(五)

五、事件链模拟事件对应的例子工程名DelegateChainEvent类模板的方法已经可以比较方便的让不同的对象接收同一个事件触发类的不同事件了,大多数的开发需要都能满足了,不过如果用过C#的人就会看到其中的一些问题,就是事件链的问题,因为C#允许对事件进行”+=”和”-=”的操作,即事件触发类的一个事件是一个事件链,可以挂接多个事件处理方法,当事件触发类这一个事件触发时,可以通知多个事件

2011-11-22 13:00:41 2615

原创 在C++中模拟委托事件的方法(四)

三、静态函数方式实现多对象事件接收对应的例子工程名MultiObjectEvent在静态函数模拟事件方法中,如果读者细心的话,会发现类CNotifyClass只包含一个指定对象的成员变量m_pEventParameter,在使用RegisterEvent方法注册接收事件的函数时如果不接收某些事件,就把相应的函数参数设为NULL,但是接收事件的对象参数只能是一个,这样就不能有多个类CRecv

2011-11-22 12:40:06 2250

原创 在C++中模拟委托事件的方法(三)

二、接口模拟事件对应的例子工程名InterfaceEvent由于C++不支持接口,但是支持抽象类和多重继承,所以可以通过class或struct模拟实现接口。1、  具体的实现方法(1)、事件触发对象类CNotifyClass的类定义如下:class INotifyClassEvent{public: INotifyClassEvent() {}; virtual ~I

2011-11-22 10:46:23 2253 1

原创 在C++中模拟委托事件的方法(二)

下边来看具体的实现方案 一、静态函数模拟事件对应的例子工程名StaticFunctionEvent1、  具体的实现方法(1)、事件触发对象类CNotifyClass的类定义如下:typedef void (*PEVENT_NOPARAM_NORETURN)(void *);typedef int (*PEVENT_NOPARAM_RETURN)(void *);typ

2011-11-22 10:24:29 3033

原创 在C++中模拟委托事件的方法(一)

关键字:C++、事件、指向函数的指针、静态方法、接口、多重继承、模板 如果对C#、Delphi等语言熟悉,都知道这些语言支持委托事件的方法使用起来非常方便,并且能够较好的降低类的依赖关系,而C++语言没有集成这种语法,所以要想在C++使用这种事件模式需要开发人员自己来模拟,本文将提供多种模拟的方案,并会分析各自的优缺点,可以在需要的时候有选择的使用。委托事件模式的具体是什么样子的,可以

2011-11-21 13:43:56 7012 6

原创 Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏

Delphi中大家在使用 ListView和TreeView时,一般都会使用到Item的Data属性来保存大家自己的内部数据,这个Data的声明如下:property Data: Pointer;大家可以看到它就是一个指针,使用上一般类似如下代码(以ListView为)添加时  PViewItemState = ^TViewItemState;  TViewItemState =

2006-10-09 23:54:00 5393

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