05 2011 档案

摘要:我想要用System.Windows.Forms.TreeView来显示文件系统树,就像资源管理器那样。文件和文件夹图标是通过SHGetFileInfo函数取得的,一切很顺利,但是显示的图标外围有一圈黑边,我确实已经将ImageList.TransparentColor属性设置成了Color.Black了,看起来似乎这个透明色设置没有生效。解决方案:ImageList.ColorDepth = ColorDepth.Depth32Bit 阅读全文
posted @ 2011-05-30 01:57 Scan. 阅读(688) 评论(0) 推荐(0)
摘要:在C#中,使用 Delegated = Object.Method; 的方式创建一个委托,在实现上,这个委托对象内部持有了源对象的一个强引用(System.Object),如果使用者恰好有特殊需求,比如“要求源对象一旦在其他任何地方都不再使用,应该被及时回收。”,那么,一旦委托对象的生命期足够长,由于委托内部的强引用存在,源对象的销毁将被延迟,与使用者预期不符,可能会导致Bug等问题。 比如,这里有一个简单的测试对象:1 class ClassForDeclTest2 {3 public string GetString() { return "call GetString" 阅读全文
posted @ 2011-05-27 14:40 Scan. 阅读(3394) 评论(8) 推荐(9)
摘要:参见文章http://www.cnblogs.com/cbscan/articles/2047269.html总结,在满足二进制兼容这个前提下导出基于对象的库接口:方式使用便捷性接口声明可读性性能C函数差好好C++纯虚函数好差好C++非虚函数,PIML实现好好差其实三种方案都是通过查表取得函数的,1、3查引入表,2查虚函数表,只是默认情况下,一个声明在接口函数集中间的新函数,不会改变旧引入表(这个行为是从那篇文章中推断出来的)却一定会改变虚表,所以方案1、3大可以将新函数随便放置不会破坏二进制兼容性。假如特殊的编译器指令可以排布虚函数在虚表中的位置,并且也有特殊指令来强制指定函数在引入表中的位 阅读全文
posted @ 2011-05-16 01:56 Scan. 阅读(2652) 评论(0) 推荐(1)