摘要:
最近要搞chromium,虽然之前下载、编译过一次两次,但是都没有时间认真看代码(拖延症患者)。后来机器上又装了其它东西,也不知道是不是因为装了vs2005的原因,现在把以前拉的代码拿过来就编译不过,需要每个工程都去修改platform toolset,把它从v100修改为windows7.1,面对chromium650个工程,逐个修改太累,所以重装系统再来一遍,好在SSD硬盘够快。 一、安装环境流程如下:1、安装win7 64位 专业版。(C盘剩下33G空间)2、安装驱动\安装工作常用软件(压缩、输入法、IM...)3、安装vs2010 Ultimate (网上只下载到这个2010版本... 阅读全文
摘要:
2012-8-22cswuyg1. 派生类对象析构时,基类析构函数执行的前期会修改对象的虚函数表指针值 一般情况下(特指基类不使用novtable属性),debug编译出来的exe,派生类对象的析构,在析构基类部分的时候,对象的虚函数表指针值项会被修改成基类的虚函数表地址,然后再执行基类的析构函数体。其中高亮的那一行是修改对象的虚函数表指针值为基类虚函数表地址 release下编译出来的就不是这样子。以一个小测试程序为例,编译器做了优化,并没有在调用基类析构函数时做赋值。但不确定编译器是否会一直做优化,因为看到了派生类析构函数体实质内容执行之前对虚函数表指针值做了一次赋值,那么为什么在基... 阅读全文
摘要:
2012-7-8cswuyg不要在WM_ACTIVATE里调用可以触发活动转移的函数一、来源 WM_ACTIVATE的问题6月19号发现了,当时发现窗口会收到两次WM_ACTIVATE消息,很是奇怪,但找不到入手点,就没有深入追究。前几天同事发现有个按钮点击了没反应,是因为WM_LBUTTONDOW消息丢失,导致按钮事件没有生成,这才发现是WM_ACTIVATE有问题,总算找到原因了。但这是为什么呢?这就需要详细分析了。二、详细分析 避免在WM_ACTIVATE里调用可能触发活动转移的函数(如:ShowWindow( SW_HIDE )); 有一个窗口A显示着,点击了跟窗口A使用同一个消... 阅读全文
摘要:
2012-7-8cswuyg 半年多以前就遇到这个问题,当时由于时间关系没有做详细分析,又用其他方式打补丁解决问题,最近又遇到,总算不懒惰,写个demo看看到底怎么回事。一、窗口的Parent、Owner关系 窗口有两种可能的上下级关系,一种是Owner,一种是parent。 创建窗口时,有WS_POPUP属性的窗口,它的父窗口其实是Owner窗口。创建之后,可以通过SetParent,为它设置父窗口,这样子他就有父窗口(子窗口位置限制在父窗口中)又有POPUP属性。 创建窗口时,有WS_CHILD属性的窗口,它的父窗口就是父窗口。可以通过SetWindowLongPtr给它加上POP... 阅读全文
摘要:
2012-6-27整理cswuyg前几天遇到过一种奇葩的代码,用0xFEEEFEEE来判断是否是悬垂指针,这种必须反对,太冒险了。另外填充值到底是什么呢?发觉要全面彻底分析,不是那么简单,最后只是把网络上的一些资料拿到这里,作为记录。一、Release下,用OllyDbg查看1、申请了50个字节的空间。可以看到被初始化为0xBAADF00D。2、把申请的内存释放之后,释放之后内存初始化为0xFEEEFEEE。二、debug下用VS2005查看1、申请了50个字节的空间。可以看到被初始化为0xcdcdcdcd2、把申请的内存释放之后,初始化为0xFEEEFEEE三、总结按照网络上某篇文章的说法: 阅读全文
摘要:
一、MD(d)、MT(d)编译选项的区别1、编译选项的位置以VS2005为例,这样子打开:1) 打开项目的Property Pages对话框2) 点击左侧C/C++节3) 点击Code Generation节4) 右侧第六行Runtime Library项目2、各个设置选项代表的含义编译选项包含静态... 阅读全文
摘要:
2011.12.11整理烛秋一、网络上流传的方法网络上流传的方法很多,也很复杂。之前在实现这个功能的时候在网络上寻找了很多,如下:http://blog.csdn.net/rainharder/article/details/6101317http://topic.csdn.net/t/20021009/15/1081843.html#r_7006146http://topic.csdn.net/u/20100414/12/A5265E43-6288-43A0-B337-C5DA0CF1D7DD.html#r_64661983http://topic.csdn.net/u/20100203/1 阅读全文
摘要:
2011.10.6烛秋一、导出类的简单方式这种方式是比较简单的,同时也是不建议采用的不合适方式。只需要在导出类加上__declspec(dllexport),就可以实现导出类。对象空间还是在使用者的模块里,dll只提供类中的函数代码。不足的地方是:使用者需要知道整个类的实现,包括基类、类中成员对象,也就是说所有跟导出类相关的东西,使用者都要知道。通过Dependency Walker可以看到,这时候的dll导出的是跟类相关的函数:如构造函数、赋值操作符、析构函数、其它函数,这些都是使用者可能会用到的函数。这种导出类的方式,除了导出的东西太多、使用者对类的实现依赖太多之外,还有其它问题:必须保证 阅读全文
摘要:
dll的学习笔记(1)——导出函数 阅读全文
摘要:
2011-9-27 烛秋 昨天、今天调dump,对windbg相当的不熟悉,但也慢慢的知道了一些常用的命令,几周前听说到有gflags这样个工具,今天正好测试下。 gflags.exe是<Debugging Tools for Windows>中的一个小工具。 安装下载链接:http://msdn.microsoft.com/en-us/windows/hardware/gg463016 安装好之后,把gflags所在文件夹(这里边还有很多好东西)设置到环境变量的path中,方便命令行使用。(我的电脑-->右键-->属性-->高级-->环境变量-->系 阅读全文