上一页 1 ··· 8 9 10 11 12 13 14 下一页
摘要: 一、COM组件的目标:COM组件的一个主要优势是:便于升级。要实现这个优势需要满足一下两个条件:1、运行时从客户程序动态加载和卸载,采用DLL技术可以实现。2、为了更好的突出DLL的优势,还需要信息隐藏,即封装性。二、COM组件的信息隐藏采用IUnknown接口来实现: 1、IUnknown接口功能简介:IUnknown意思是未知,即未知的接口。采用这个名字是为了简单起见,所有的COM接口都需要继承IUnknown,因此若某个客户拥有一个IUnknown接口的指针,也就不知道接口到底是什么类型的,只需要知道此接口可以用来查询其他接口。IUnknown接口有一个用来查询接口的函数QueryInt 阅读全文
posted @ 2013-03-11 15:55 归海一刀 阅读(1817) 评论(0) 推荐(0) 编辑
摘要: 【基本知识】1、#pragma section,建立一个section。下例中,ATL是section名,_a是section中的的段名,段默认大小为104H,另外默认段内数据初始化为0。意即一个section可以包含多个名字不同的段。不懂section的请查阅PE文件结构。2、合并两个Section3、allocate将指定的变量放在指定的section中的指定的段中。4、VC编译器属性,假设定义了同一section的三个段,ATL$_a、ATL$_b、ATL$_c,则这三个段在section内会按名称顺序依次排列。【ATL OBJ_MAP 的建立】根据【基本知识】,很容易分析出,上文定义了 阅读全文
posted @ 2013-03-11 11:44 归海一刀 阅读(299) 评论(0) 推荐(0) 编辑
摘要: COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但是,即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,例如:void SomeApp( IHello * pHello ){IHello* pCopy = pHello;pCopy->AddRef(); OtherApp();pCopy->Hello();pCopy->Release();}看起来好像无懈可击,但是假设OtherApp 阅读全文
posted @ 2012-09-11 22:29 归海一刀 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 1.boost 这个使用的人多不多说了2.pthread windows下的posix线程实现3.libcurl 一个有名的开源网络爬虫库 阿里旺旺中使用到了4.libeay32 OpenSSL Library5.libtidy 一个专门解析htm的库6.zlib 这个鬼都知道7.freetype c接口的type2字体处理库8.libmad 一个编解码mp3的库9.libogg,等 一个编解码ogg音频格式的库10.libsnd 一个开源的编解码十多种音频格式的库11.ffmpeg 一个关于音频视频处理的库12.Freeimage,Cximage,Devil 这3个都是用来处理图形的库13. 阅读全文
posted @ 2012-07-24 22:16 归海一刀 阅读(716) 评论(0) 推荐(0) 编辑
摘要: 最近在看delta3d开源引擎,最底层封装的消息机制,是基于其has_slots,搜索了一下其资料发现是一个很好用的C++库,先对其简单介绍一下。 首先说下插槽机制。插槽系统常用的有三种:boost的signals,sigslot,sigc++基本功能有:1.connect2.disconnect3.emitsigslot优点1.不用担心空回调,当回调对象析构时会自动disconnect2.支持多线程,线程安全,有锁3.缺点1.只能回调void类型函数,不支持返回值。boost中的signals库架构类似,支持返回值,但引入了boost中的其他库2.slot没有优先级,不能动态调整回调队列中的 阅读全文
posted @ 2012-07-24 22:09 归海一刀 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 写GDI的时候,我们经常会由于粗心大意,忘记释放GDI资源,导致GDI句柄泄露。再加上如果单元测试做的不好,就会在产品发布以后发生问题。众所周知,Windows上对于一个进程允许的最大GDI句柄数量为9999,如果程序有大量的GDI句柄没有被及时回收,那么程序就会表现的不正常。如果这种问题发生在以前的WINDOWS 98年代,甚至会造成系统崩溃。所以,这里我将陆续记录一些GDI编程需要注意的地方,作为今后单元测试中的一部分来进行:1、Create()必须Delete(),包括CreateCompatibleDC2、SelectObject()必须是成对出现3、"H"打头的一 阅读全文
posted @ 2012-07-06 23:44 归海一刀 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 超类化根据已有的(windows系统中已经注册过的)窗口类,比如“Edit”,”Button”等,复制其WNDCLASS(EX)结构,构造一个新类,并提供额外的功能和行为。例如,如果需要编写一个只接受数字输入的Edit控件(当用户输入非数字符号时控件发出警告声),可超类化windows内置的Edit控件,新控件的窗口类名为”Number_Only_Edit”,(可以在Spy++工具中看到此窗口类名称):class CNumberOnlyEdit : public CWindowImpl<CNumberOnlyEdit>{public: //Superclassing the &qu 阅读全文
posted @ 2012-07-06 16:09 归海一刀 阅读(635) 评论(0) 推荐(0) 编辑
摘要: FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。 项目地址:http://www.fbreader.org/FBReaderJ/ AngleAngle是一款专为Android平台设计的,适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现。 项目地址:http://code.google.com/p/angle/android-shuffleandroid-shuffle是一个GTD(G 阅读全文
posted @ 2011-12-26 08:44 归海一刀 阅读(340) 评论(1) 推荐(0) 编辑
摘要: FBReaderJFBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。 项目地址:http://www.fbreader.org/FBReaderJ/ AngleAngle是一款专为Android平台设计的,适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现。 项目地址:http://code.google.com/p/angle/android-shuffleandroid-shuffle是一个GTD(Ge 阅读全文
posted @ 2011-12-07 10:42 归海一刀 阅读(181) 评论(0) 推荐(0) 编辑
摘要: //引用自:http://blog.csdn.net/wujiangming/article/details/6216154今天主要研究了一下设置界面中用得比较多的PreferenceActivity,它包含了许多类似控件的东西来表示不同的设置需求如分类设置,选择框设置,下拉列表设置,编辑框设置,铃声设置,而且这些设置不需要我们自己来保存用户设置的数据,它自己会将数据保存在xml文件当中。下面是PreferenceActivity中各个组件的介绍。1. PreferenceScreen:设置页面,可嵌套形成二级设置页面,用Title参数设置标题(这个还可以作为单独的activity来启动设置界 阅读全文
posted @ 2011-12-05 14:28 归海一刀 阅读(407) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 下一页