<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gogogo的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/gogogo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gogogo]]></copyright><item><title><![CDATA[命令行自动提升管理员权限]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/50351188</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/50351188</guid><author>gogogo</author><pubDate>Fri, 18 Dec 2015 13:37:14 +0800</pubDate><description><![CDATA[通过快捷方式在命令行自动提升到管理员权限]]></description><category></category></item><item><title><![CDATA[鼠标相关事件触发时间与顺序]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/26671599</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/26671599</guid><author>gogogo</author><pubDate>Fri, 23 May 2014 09:39:20 +0800</pubDate><description><![CDATA[为了彻底弄清鼠标相关事件触发时间与顺序，写了个程序输出鼠标操作信息，这里做个记录，
﻿﻿]]></description><category></category></item><item><title><![CDATA[CDHtmlDialog类OnBeforeNavigate2取消页面浏览后页面元素事件失效问题的解决方法]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/17162905</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/17162905</guid><author>gogogo</author><pubDate>Fri, 06 Dec 2013 10:58:49 +0800</pubDate><description><![CDATA[在基于CDHtmlDialog类的对话框使用OnBeforeNavigate2已经有很多人给出了方法
http://alee201.blog.163.com/blog/static/277908512007313113733617/
http://bbs.youkuaiyun.com/topics/390411927?page=1
但是正如第二个链接中4楼的人提出的问题”该方法我早就试过，却是起作用，但]]></description><category></category></item><item><title><![CDATA[关于_beginthreadex与AfxbeginThread]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/15503531</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/15503531</guid><author>gogogo</author><pubDate>Tue, 12 Nov 2013 15:57:01 +0800</pubDate><description><![CDATA[比较CreateThread,_beginthreadex与AfxbeginThread的文章已经很多了，介绍的已经很详细，其中比较优秀的有：
http://kulong0105.blog.163.com/blog/static/174406191201198104050236/

但是一直有个疑问
如果在线程中既可能使用MFC库，也可能使用C Run-time Library，这时应该使]]></description><category></category></item><item><title><![CDATA[Delphi中多线程同步过程Synchronize的一些说明]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/10139501</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/10139501</guid><author>gogogo</author><pubDate>Wed, 21 Aug 2013 11:41:11 +0800</pubDate><description><![CDATA[在windows原生应用程序开发中，经常伴随多线程的使用，多线程开发很简单，难点就是在于线程的同步，在Delphi中提供了VC中不具备的一个过程Synchronize，使用起来非常方便，解决了很多VC开发中碰到的常见问题，但是在看了很多Delphi代码后，发现很多人对于Synchronize的理解还是有问题的，不能很好地正确使用Synchronize过程，本文对Synchronize过程的使用提出]]></description><category></category></item><item><title><![CDATA[C++ 中dynamic_cast<>的使用方法]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7073981</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7073981</guid><author>gogogo</author><pubDate>Thu, 15 Dec 2011 14:19:02 +0800</pubDate><description><![CDATA[/*这是从网上摘下的例子，主要讲述了 dynamic_cast
/* 
作用：将一个基类对象指针（或引用）cast到继承类指针，dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理， 
       即会作一定的判断。 
       对指针进行dynamic_cast，失败返回null，成功返回正常cast后的对象指针； 
       对引用进行dynamic_c]]></description><category></category></item><item><title><![CDATA[按需释放单例模型的改进]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7041907</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7041907</guid><author>gogogo</author><pubDate>Mon, 05 Dec 2011 13:56:35 +0800</pubDate><description><![CDATA[在《C++中的单例模式及按需释放模型》系列文中已经对按需释放单例模型进行了详细描述，其中也提到了是模仿auto_ptr引入单例类实例获取器来控制单例类实例的生命周期，实现按需施放的，但是没有给出运算符重载的版本，本文对实例获取器给出运算符重载版本，使单例模型使用起来更加容易方便。
不多说，直接给出单例类实例获取器的代码
	template 
	class Singleton_ptr
	{
	p]]></description><category></category></item><item><title><![CDATA[C++中的单例模式及按需释放模型（五）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7027208</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7027208</guid><author>gogogo</author><pubDate>Wed, 30 Nov 2011 17:20:17 +0800</pubDate><description><![CDATA[四、多线程安全的通用单例类实例获取器
例子工程的名称是SingletonThreadSafeInstanceGetter。
刚开始写本文时，本没有想实现多线程版本，主观上以为同通常的单例模式一样，多个多线程同步就可以了，很简单，让读者自己开发就好了，不过后来真正去思考时发现不是那么简单的，感觉对此还是很有介绍的必要。
1、单例类实例与单例类实例获取器实例的对应关系
在实现多线程安全的通用单]]></description><category></category></item><item><title><![CDATA[C++中的单例模式及按需释放模型（四）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7023923</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7023923</guid><author>gogogo</author><pubDate>Tue, 29 Nov 2011 17:35:22 +0800</pubDate><description><![CDATA[三、使用模板类实现的通用单例类实例获取器
例子工程的名称是GeneralFreeInstanceGetter。
1、通用的模板类单例类实例获取器
功能同前文描述的单例类获取器一样，我们改成模板类方式，把单例类作为模板参数，以便变成通用的单例类实例获取器。
模板类的定义与实现
namespace dpex
{
	template 
	class SingletonInstanceGette]]></description><category></category></item><item><title><![CDATA[C++中的单例模式及按需释放模型（三）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7020345</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7020345</guid><author>gogogo</author><pubDate>Tue, 29 Nov 2011 14:07:16 +0800</pubDate><description><![CDATA[二、使用辅助类实现按需释放的单例模式
例子工程的名称是SingleClassFreeInstanceGetter。
1、引入辅助类
为什么会想到引入辅助类来实现单例，这个辅助类要实现什么样的功能来辅助，要回答这两个问题，我们还是要先分析前文中要求单例类具有的特点，简单来讲就是2个特点，第一是要单例，第二是要具有生命周期，不能创建了就不管，关于单例研究的已经很多了，没有多少进一步处理的空间了，]]></description><category></category></item><item><title><![CDATA[C++中的单例模式及按需释放模型（二）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7020153</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7020153</guid><author>gogogo</author><pubDate>Mon, 28 Nov 2011 17:14:32 +0800</pubDate><description><![CDATA[一、在C++中实现单例模式
例子工程的名称是Singleton。
1、模拟C#的方法实现单例模式
本人开始学习设计模式也是先看的C#语言描述的，后来要在C++上实现，参考了网上相关文章，使用一个静态类成员的指针来实现单例模式，代码如下：
SingletonSimulateGC类定义
class SingletonSimulateGC
{
private:
	SingletonSimula]]></description><category></category></item><item><title><![CDATA[C++中的单例模式及按需释放模型（一）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7009862</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7009862</guid><author>gogogo</author><pubDate>Mon, 28 Nov 2011 16:19:21 +0800</pubDate><description><![CDATA[关键字：C++、单例模式、友元、模板、多线程、对象生命周期
 
单例模式是设计模式中最简单最容易理解的模式之一，实用方便，项目设计开发中会被经常使用，但是不知道读者有没有考虑过这个问题，单例模式实例什么时候被释放，读者有兴趣可以仔细分析下，按照目前通常方法实现的单例模式都是直到系统退出的时候才释放的，甚至是有垃圾回收机制的C#上也是这样的，系统切换了功能模块还存在大量的这个模块根本不使用的单例]]></description><category></category></item><item><title><![CDATA[解决office一些文档不能显示在win7任务栏最近列表中的方法]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/7018971</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/7018971</guid><author>gogogo</author><pubDate>Mon, 28 Nov 2011 12:46:21 +0800</pubDate><description><![CDATA[win7任务栏有个功能非常好用，就是在任务栏固定某个应用程序，此程序的任务栏右键菜单可以直接显示此应用程序最近使用的文件，并且可以把某些文件固定在右键菜单的文档列表中。
使用win7有一年多了，这个功能用着很爽，但是偶尔会碰到一个问题，就是最近使用的文件虽然能出现在excel自己最近使用的文件列表中，却可能不出现在任务栏右键菜单上，虽然这个问题出现概率很低，但是出现了就很麻烦，后来经过多次测试终]]></description><category></category></item><item><title><![CDATA[在C++中模拟委托事件的方法（六）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/6999960</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/6999960</guid><author>gogogo</author><pubDate>Tue, 22 Nov 2011 13:11:52 +0800</pubDate><description><![CDATA[最后我们针对这4种比较可行的模拟事件方法进行一下评价，评价的标准主要考虑以下几个方面
1、  是否可以只接收事件触发类的一部分事件
2、  一个事件触发类是否支持多个事件接收类对象接收事件
3、  事件处理函数是否可以使用保护或私有的访问权限，保证事件接收类的封装特性
4、  书写方便程度与代码优雅度、简洁程度，对于这个的标准主要是看开发人员开发事件触发类（服务类）和事件接收类的代码简洁程]]></description><category></category></item><item><title><![CDATA[在C++中模拟委托事件的方法（五）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/6999919</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/6999919</guid><author>gogogo</author><pubDate>Tue, 22 Nov 2011 13:00:41 +0800</pubDate><description><![CDATA[五、事件链模拟事件
对应的例子工程名DelegateChainEvent
类模板的方法已经可以比较方便的让不同的对象接收同一个事件触发类的不同事件了，大多数的开发需要都能满足了，不过如果用过C#的人就会看到其中的一些问题，就是事件链的问题，因为C#允许对事件进行”+=”和”-=”的操作，即事件触发类的一个事件是一个事件链，可以挂接多个事件处理方法，当事件触发类这一个事件触发时，可以通知多个事件]]></description><category></category></item><item><title><![CDATA[在C++中模拟委托事件的方法（四）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/6999477</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/6999477</guid><author>gogogo</author><pubDate>Tue, 22 Nov 2011 12:40:06 +0800</pubDate><description><![CDATA[三、静态函数方式实现多对象事件接收
对应的例子工程名MultiObjectEvent
在静态函数模拟事件方法中，如果读者细心的话，会发现类CNotifyClass只包含一个指定对象的成员变量m_pEventParameter，在使用RegisterEvent方法注册接收事件的函数时如果不接收某些事件，就把相应的函数参数设为NULL，但是接收事件的对象参数只能是一个，这样就不能有多个类CRecv]]></description><category></category></item><item><title><![CDATA[在C++中模拟委托事件的方法（三）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/6999352</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/6999352</guid><author>gogogo</author><pubDate>Tue, 22 Nov 2011 10:46:23 +0800</pubDate><description><![CDATA[二、接口模拟事件
对应的例子工程名InterfaceEvent
由于C++不支持接口，但是支持抽象类和多重继承，所以可以通过class或struct模拟实现接口。
1、  具体的实现方法
(1)、事件触发对象类CNotifyClass的类定义如下：
class INotifyClassEvent
{
public:
	INotifyClassEvent() {};
	virtual ~I]]></description><category></category></item><item><title><![CDATA[在C++中模拟委托事件的方法（二）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/6999216</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/6999216</guid><author>gogogo</author><pubDate>Tue, 22 Nov 2011 10:24:29 +0800</pubDate><description><![CDATA[下边来看具体的实现方案
 
一、静态函数模拟事件
对应的例子工程名StaticFunctionEvent
1、  具体的实现方法
(1)、事件触发对象类CNotifyClass的类定义如下：
typedef void (*PEVENT_NOPARAM_NORETURN)(void *);
typedef int (*PEVENT_NOPARAM_RETURN)(void *);
typ]]></description><category></category></item><item><title><![CDATA[在C++中模拟委托事件的方法（一）]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/6996290</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/6996290</guid><author>gogogo</author><pubDate>Mon, 21 Nov 2011 13:43:56 +0800</pubDate><description><![CDATA[关键字：C++、事件、指向函数的指针、静态方法、接口、多重继承、模板
 
如果对C#、Delphi等语言熟悉，都知道这些语言支持委托事件的方法使用起来非常方便，并且能够较好的降低类的依赖关系，而C++语言没有集成这种语法，所以要想在C++使用这种事件模式需要开发人员自己来模拟，本文将提供多种模拟的方案，并会分析各自的优缺点，可以在需要的时候有选择的使用。
委托事件模式的具体是什么样子的，可以]]></description><category></category></item><item><title><![CDATA[Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏]]></title><link>https://blog.youkuaiyun.com/gogogo/article/details/1327911</link><guid>https://blog.youkuaiyun.com/gogogo/article/details/1327911</guid><author>gogogo</author><pubDate>Mon, 09 Oct 2006 23:54:00 +0800</pubDate><description><![CDATA[Delphi中大家在使用 ListView和TreeView时，一般都会使用到Item的Data属性来保存大家自己的内部数据，这个Data的声明如下：property Data: Pointer;大家可以看到它就是一个指针，使用上一般类似如下代码（以ListView为）添加时  PViewItemState = ^TViewItemState;  TViewItemState = ]]></description><category></category></item></channel></rss>