自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 消息定义问题

消息定义问题:工程大了,消息越来越多,定义的消息号重的可能性增大。消息好重复的危害这儿不详述,想必大家有所体会。 如何解决?方案一:统一放在一个文件里。从上到下,消息号逐渐增大,可以给一个功能预留足够多的空间。比如智能地址栏消息,预留WM_USER+ 100到WM_USER + 200。如果新增功能,比如页面动态缩放,再预留WM_USER + 201到WM_USER+250。这样就解决

2010-05-27 15:31:00 684

原创 最长的VS2005函数名

最多4096个字符,极限了 void IamafunctionDoyouknownHowlongmynamecanbeUwillneverknownBecauseGFWIamafunctionDoyouknownHowlongmynamecanbeUwillneverknownBecauseGFWIamafunctionDoyouknownHowlongmynamecanbeUwill

2010-01-25 22:27:00 1133

原创 窗口焦点问题

界面编程里面,经常碰到焦点问题,以下几点可注意: 1. Create时指定 WS_EX_NOACTIVATE属性,注意同时去掉WS_VISIBLE,这样创建窗口时不会抢焦点。 2.响应 WM_MOUSEACTIVATE 消息,返回 MA_NOACTIVATE,这样鼠标在其上操作时不会抢焦点,在popup窗口上做这条即可,对其子窗口一并有效。 3.可以用 GetGUIThre

2010-01-19 11:16:00 1069

原创 进入大公司的感受

最大的感受有两条,一是沟通的重要性和现实意义特别明显,二是开放的心态和积极的态度非常重要。技术层面的东西和其他地方一样,必须强过其他人,才有意义。

2010-01-07 12:26:00 1328

原创 wfstream的中文bug!

用wfstream的write或 以后用fstream,应该在最后加上是否fstream.good()的判断。以此保证没有问题。

2009-09-27 15:32:00 1606

原创 fstream.getline的坑

    wfstream f(data_file, wfstream::in);    while( !f.eof() && f.good() )    {        TCHAR sz[1024 * 128] = {0};        f.getline(sz, (sizeof(sz) / sizeof(wchar_t)) - 1);    } 两个说明,

2009-09-23 19:46:00 4397 2

原创 跨进程使用Boundschecker( DevPartner )

BoundsChecker( 中文搜索Boundschecker多一些,E文DevPartner多一些,故两个名字都列在标题里 )结合VS可以方便的找出大部分内存、GDI、句柄等资源泄漏。具体方法此处不列了,参照文档即可。这里谈谈怎么跨进程使用DevPartner。 由来:chrome之后,多进程模型被多数浏览器厂商采纳,即框架进程 + 页面进程,为简化问题,设为进程A启动进程B,我们想用

2009-09-02 18:35:00 2256

原创 MoveFile的坑

输入法在这儿栽过两次,都是因为MoveFile不能跨分区。用MoveFileEx代替吧。另外MoveFileEx之前最好去掉隐藏属性。

2009-08-25 12:25:00 1399

原创 句柄泄露

用Windbg的!htrace可以调试句柄泄露。原理是做快照,比较两次的不同,找到在哪里分配这些泄露的句柄。 流程如下:1.windbg关联程序leak.exe。2.!htrace -enable开启htrace功能。!htrace -snapshot做第一个快照。3.执行造成泄漏的操作。4.!hrace -diff。此命令会列出所有新增句柄的分配上下文,附图如下。具体不解

2009-08-18 18:29:00 3406 1

原创 有些tag不能put_innerHTML

有些tag在put_innerHTML时会出错,或者不起作用,比如 tr, td, tbody, table等。因为随意put进去,可能造成document解析不正确

2009-08-18 11:42:00 1545

原创 IE中取anchor

IHTMLDocument2->get_Anchors不好使,get_all之后,根据tagName是否为"a"更靠谱。

2009-08-18 11:39:00 775

原创 VS2005某个文件不能下断点——提示文件版本不一致

原因:可以认为是VS的bug。解决:1.重建文件。不行转2.         2.文件编码改成UTF-8。不行转3.         3.重新获取整个工程。  另外常规的原因也列一下吧,方便新同学们:1.没有重新编译2.编译出来的东西和调试出来的东西不是一个3.优化选项没有设成disable 

2009-08-04 17:46:00 926 1

原创 浏览器随想

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////关于开发流程问题描述:一般的开发流程,开发人员做出正常功能很快,大量(几乎在3倍以上)时间花在解决相关问题上

2009-04-19 01:23:00 787

原创 记忆的真谛

记忆的真谛在于需要的时候能搜索到。大脑真是个奇妙的东西,像是无限容量的数据库,无论是小时候死记硬背无数遍的诗词,还是无意间只看过一眼的路人,统统都能存储起来。这一点相信你也有体会。既然都能记住,为什么实际上感觉有些人记忆力好,有些人记忆力差呢?我想主要的差别在于,需要的时候能否及时搜索到相关信息。那么怎样增强搜索?一、多次重复。记忆规律曲线说明了这点。无数人讲过。二、多加标签,同一个东

2009-04-17 22:12:00 824

原创 调试菜谱之二——CPU100%

Windows应用程序有时会碰到CPU高的问题。 一种方法是,暂停程序,看线程停在什么地方。具体方法参见(菜谱之家伙什)。连续几次暂停如果都停在同一个地方,基本可以确定问题出在这里,仔细看代码吧。如果是死循环,改掉就好了。如果是连续计算,比如不停地收发SOCKET数据,则可适当加Sleep(1)解决。在更高层面上修改更好。这里只介绍凉菜,动流程的大餐请自行制作。 有时候可能无法用V

2009-04-15 14:45:00 965

原创 调试菜谱之一——调试家伙什

这里写的是能让你的调试效率倍增的工具,如果你觉得哪里还应该详细点,请跟帖。 1.VC2005(VC6)的Watch窗口1.1 进入调试状态后,菜单-> Tools -> Window -> Watch ( Alt + 3 )1.2 VC2005的watch可以看内置类型、Unicode字符串。1.3 想看返回值的话,用eax。偶原来不了解这点,想看返回值时,另加代码,很麻烦。

2009-04-15 11:12:00 1153

原创 翻译体会

自己的经验总结: 1.动词不可照搬。应意译,否则看其来会相当奇怪。比如: Normal 0 7.8 磅 0 2 false false false MicrosoftInterne

2009-04-01 22:15:00 806

原创 翻阅Windows SDK Samples

看SPI的时候,碰巧看了看SDK的例子,发现其中有不少小东西可以用来快速建模。 NetDs下面的例子1. Function Discovery资源发现,可以用它遍历计算机上的资源,包括本地和远程的。可以想到的应用有,读取和写入PnP设备(比如U盘、摄像头),获得PnP设备插入拔出通知。2. Http下面的server用HttpAPI搭的一个http服务器,短小精干,需要的时候拿来用用还是很

2009-04-01 18:02:00 1491

转载 近之则不逊;慈不掌兵

近之则不逊;慈不掌兵 - [中国式管理思想]---转帖正文:本来对孔夫子的“唯女子与小人难养也,远之则怨,近之则不逊”有些不以为然,觉得这是小瞧了女人的理性。后来想想,这话出现的背景是古代,古代不提倡女子读书,女子思考的机会比较少,心智相对成熟较慢,接近孩子,也是有可能的,也就释然。现在有了孩子,觉得小人儿真的难养也,远之则怨,近之则不逊。我的女儿比较服我管,基本上不服

2009-04-01 13:49:00 1565

原创 完整性开发

从业5年,一直开发Windows平台上的程序,客户端为主,间或网络、驱动。对于测试总结出一些经验,自认为有助于提高开发生产效率,目前的感觉在30%左右。具体数据随着这些方法的使用逐渐清晰。也请参考这些方法的兄弟们参与讨论,指正或提出更好的办法,共同让程序员(当然也包括测试、客户)的生活变得轻松些。      每段先提出问题,再说下针对的测试方法。      第一,一个看似简单的模块往往需

2009-03-30 09:36:00 812

翻译 Code Snippet

1.让控制台窗口消失#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )

2009-03-24 11:44:00 381

原创 《穷爸爸、富爸爸》读后感

      程序员也得理财。      朋友推荐了一本书,铂程斋小满的故事2008,看完之后很有感触。不过这篇文章要说的是其中提到的另一本关于理财的,《穷爸爸、富爸爸》。很薄,看的却不太快,断断续续将近两周,感觉还有精华的东西没抓到。不管怎么样,先写点记得住的吧。      最重要观点的是对你拥有的东西分了类:资产和负债。买来之后能带来收入的是资产,买来之后需要不断为其花费的是负债。或者,

2009-03-18 17:54:00 1964 1

原创 加解密简介

    加密技术,签名技术的需要做到三防一确认。一防窃听,二防篡改,三防抵赖,确认对方身份。    在电子商务过程中,开始时必须确认对方身份,不然谈了半天,发现互联网那头真是一条狗,就悲剧了。    防窃听是指,即便有人在网络传输过程中得到了数据,看到的也是乱七八糟,无法从中得知正常的信息。举个例子,谈判前老总通过网络跟你商定了底价,不巧对方抓取到了此信息,如果没有合适的加密手段,他可能就

2009-03-16 14:36:00 1492

原创 IE内核禁用Javascript

让IE停止执行(是否同时停止解析目前还没有验证)的三种方法:1.改注册表,google下很容易知道,略。2.由IWebBrowser2禁用javascript參考:http://msdn.microsoft.com/en-us/library/aa770041(VS.85).aspx  1).實現一個IDispatch  2).連接到webbrowser 的 DIID_DWebBrowserEve

2008-12-19 16:16:00 2847 1

原创 Firefox( Gecko ) 与 IE 事件对应

多数做浏览器开发XD更熟悉IE,我也是,所以从IE的事件出发1.浏览前的事件通知 IE -- BeforeNavigate2  FF -- nsIWebProgressListener::OnSateChange( STATE_START )2.连接到服务器 IE -- NavigateComplete FF -- nsIWebProgressListener::OnLocationChange3

2008-12-16 10:14:00 792

原创 C++代码行数

随机取了10个cpp和.h文件查行,一个cpp文件的平均行数是477, 一个.h文件的平均行数 是149。若有2000个文件,那大约代码在2000 / 2 *(477+149) = 63000行左右。

2007-06-25 11:20:00 1473

原创 微软VC6_SDK的bug

1.InternetGetCookie的宽字符版本InternetGetCookieW在头文件中需要ANSI版本的url,实际上它内部需要的是UNICODE版本的url,如果为了编译通过,将宽字符转为ANSI,将不能取出cookie。可以通过强行转成const char*解决。比如LPCWSTR url = L"http://.163.com ";InternetGetCookie( (c

2007-05-28 17:45:00 699

原创 完成端口高效的三个原因

最近看了点完成端口的内容,一点心得记录如下:1.避免了select的查询,可以从socket直接定位到完成端口。想象同时上千个连接的程序中,别的模型里只能通过select的方式对所有的socket链接查询一次才能知道哪个socket上有事件;而完成端口模型中,一旦一个socket上有事件发生,它立即将事件组成一个完成包放入完成端口(实际上是个队列,放入完成端口的内部API是KeInsertQu

2007-05-23 19:01:00 2807

原创 Stack Walk

取得call stack的小函数// index为0则为取前一个的地址long GetStackFrame(int index){     long _ebp = 0;     __asm    {          mov _ebp, ebp    }     for(int i=0; i     {         _ebp = *(long*)_ebp;    }    long

2007-03-12 19:09:00 1383

原创 程序优化

    1.按照模块划分,找到对性能影响较大的模块,进行优化。临时叫做“模块化优化”。    2.分析每个线程的运行时间,对明显不合理的线程及其对应的功能和代码进行优化。    3.针对硬性指标:         1) 内存和虚拟内存:单纯看内存指标意义不大,应该综合的看内存和虚拟内存。        2) CPU运行时间:横向对比其他类似软件,可以看到IG占用的CPU

2007-03-06 18:10:00 834

原创 亲爱的,内存泄漏了

以前一直写在MSN Space上,可惜太慢了,转到这里混吧:)C++内存泄漏太常见了,开点常见小药方备案,由简单到复杂,分为8类:1.用Debug版本编译,退出时自动提示哪个文件哪一行泄漏。注意:使用此方法不能使用TerminateProcess。2.有时,第一种方法不能提供文件名和行号,而只能提供块号,此时可用_CrtSetBreakAlloc()在分配该块时下断点。注意:此方法要求每次

2007-02-26 17:08:00 1046

监视debug信息DbMon.exe

不调试状态下,可监视进程输出的debug信息。相当于VC的output窗口

2009-01-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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