- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 消息定义问题
消息定义问题:工程大了,消息越来越多,定义的消息号重的可能性增大。消息好重复的危害这儿不详述,想必大家有所体会。 如何解决?方案一:统一放在一个文件里。从上到下,消息号逐渐增大,可以给一个功能预留足够多的空间。比如智能地址栏消息,预留WM_USER+ 100到WM_USER + 200。如果新增功能,比如页面动态缩放,再预留WM_USER + 201到WM_USER+250。这样就解决
2010-05-27 15:31:00 726
原创 最长的VS2005函数名
最多4096个字符,极限了 void IamafunctionDoyouknownHowlongmynamecanbeUwillneverknownBecauseGFWIamafunctionDoyouknownHowlongmynamecanbeUwillneverknownBecauseGFWIamafunctionDoyouknownHowlongmynamecanbeUwill
2010-01-25 22:27:00 1160
原创 窗口焦点问题
界面编程里面,经常碰到焦点问题,以下几点可注意: 1. Create时指定 WS_EX_NOACTIVATE属性,注意同时去掉WS_VISIBLE,这样创建窗口时不会抢焦点。 2.响应 WM_MOUSEACTIVATE 消息,返回 MA_NOACTIVATE,这样鼠标在其上操作时不会抢焦点,在popup窗口上做这条即可,对其子窗口一并有效。 3.可以用 GetGUIThre
2010-01-19 11:16:00 1108
原创 进入大公司的感受
最大的感受有两条,一是沟通的重要性和现实意义特别明显,二是开放的心态和积极的态度非常重要。技术层面的东西和其他地方一样,必须强过其他人,才有意义。
2010-01-07 12:26:00 1356
原创 wfstream的中文bug!
用wfstream的write或 以后用fstream,应该在最后加上是否fstream.good()的判断。以此保证没有问题。
2009-09-27 15:32:00 1628
原创 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 4450 2
原创 跨进程使用Boundschecker( DevPartner )
BoundsChecker( 中文搜索Boundschecker多一些,E文DevPartner多一些,故两个名字都列在标题里 )结合VS可以方便的找出大部分内存、GDI、句柄等资源泄漏。具体方法此处不列了,参照文档即可。这里谈谈怎么跨进程使用DevPartner。 由来:chrome之后,多进程模型被多数浏览器厂商采纳,即框架进程 + 页面进程,为简化问题,设为进程A启动进程B,我们想用
2009-09-02 18:35:00 2295
原创 MoveFile的坑
输入法在这儿栽过两次,都是因为MoveFile不能跨分区。用MoveFileEx代替吧。另外MoveFileEx之前最好去掉隐藏属性。
2009-08-25 12:25:00 1490
原创 句柄泄露
用Windbg的!htrace可以调试句柄泄露。原理是做快照,比较两次的不同,找到在哪里分配这些泄露的句柄。 流程如下:1.windbg关联程序leak.exe。2.!htrace -enable开启htrace功能。!htrace -snapshot做第一个快照。3.执行造成泄漏的操作。4.!hrace -diff。此命令会列出所有新增句柄的分配上下文,附图如下。具体不解
2009-08-18 18:29:00 3444 1
原创 有些tag不能put_innerHTML
有些tag在put_innerHTML时会出错,或者不起作用,比如 tr, td, tbody, table等。因为随意put进去,可能造成document解析不正确
2009-08-18 11:42:00 1573
原创 VS2005某个文件不能下断点——提示文件版本不一致
原因:可以认为是VS的bug。解决:1.重建文件。不行转2. 2.文件编码改成UTF-8。不行转3. 3.重新获取整个工程。 另外常规的原因也列一下吧,方便新同学们:1.没有重新编译2.编译出来的东西和调试出来的东西不是一个3.优化选项没有设成disable
2009-08-04 17:46:00 953 1
原创 浏览器随想
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////关于开发流程问题描述:一般的开发流程,开发人员做出正常功能很快,大量(几乎在3倍以上)时间花在解决相关问题上
2009-04-19 01:23:00 824
原创 记忆的真谛
记忆的真谛在于需要的时候能搜索到。大脑真是个奇妙的东西,像是无限容量的数据库,无论是小时候死记硬背无数遍的诗词,还是无意间只看过一眼的路人,统统都能存储起来。这一点相信你也有体会。既然都能记住,为什么实际上感觉有些人记忆力好,有些人记忆力差呢?我想主要的差别在于,需要的时候能否及时搜索到相关信息。那么怎样增强搜索?一、多次重复。记忆规律曲线说明了这点。无数人讲过。二、多加标签,同一个东
2009-04-17 22:12:00 846
原创 调试菜谱之二——CPU100%
Windows应用程序有时会碰到CPU高的问题。 一种方法是,暂停程序,看线程停在什么地方。具体方法参见(菜谱之家伙什)。连续几次暂停如果都停在同一个地方,基本可以确定问题出在这里,仔细看代码吧。如果是死循环,改掉就好了。如果是连续计算,比如不停地收发SOCKET数据,则可适当加Sleep(1)解决。在更高层面上修改更好。这里只介绍凉菜,动流程的大餐请自行制作。 有时候可能无法用V
2009-04-15 14:45:00 990
原创 调试菜谱之一——调试家伙什
这里写的是能让你的调试效率倍增的工具,如果你觉得哪里还应该详细点,请跟帖。 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 1187
原创 翻译体会
自己的经验总结: 1.动词不可照搬。应意译,否则看其来会相当奇怪。比如: Normal 0 7.8 磅 0 2 false false false MicrosoftInterne
2009-04-01 22:15:00 823
原创 翻阅Windows SDK Samples
看SPI的时候,碰巧看了看SDK的例子,发现其中有不少小东西可以用来快速建模。 NetDs下面的例子1. Function Discovery资源发现,可以用它遍历计算机上的资源,包括本地和远程的。可以想到的应用有,读取和写入PnP设备(比如U盘、摄像头),获得PnP设备插入拔出通知。2. Http下面的server用HttpAPI搭的一个http服务器,短小精干,需要的时候拿来用用还是很
2009-04-01 18:02:00 1523
转载 近之则不逊;慈不掌兵
近之则不逊;慈不掌兵 - [中国式管理思想]---转帖正文:本来对孔夫子的“唯女子与小人难养也,远之则怨,近之则不逊”有些不以为然,觉得这是小瞧了女人的理性。后来想想,这话出现的背景是古代,古代不提倡女子读书,女子思考的机会比较少,心智相对成熟较慢,接近孩子,也是有可能的,也就释然。现在有了孩子,觉得小人儿真的难养也,远之则怨,近之则不逊。我的女儿比较服我管,基本上不服
2009-04-01 13:49:00 1603
原创 完整性开发
从业5年,一直开发Windows平台上的程序,客户端为主,间或网络、驱动。对于测试总结出一些经验,自认为有助于提高开发生产效率,目前的感觉在30%左右。具体数据随着这些方法的使用逐渐清晰。也请参考这些方法的兄弟们参与讨论,指正或提出更好的办法,共同让程序员(当然也包括测试、客户)的生活变得轻松些。 每段先提出问题,再说下针对的测试方法。 第一,一个看似简单的模块往往需
2009-03-30 09:36:00 837
翻译 Code Snippet
1.让控制台窗口消失#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )
2009-03-24 11:44:00 403
原创 《穷爸爸、富爸爸》读后感
程序员也得理财。 朋友推荐了一本书,铂程斋小满的故事2008,看完之后很有感触。不过这篇文章要说的是其中提到的另一本关于理财的,《穷爸爸、富爸爸》。很薄,看的却不太快,断断续续将近两周,感觉还有精华的东西没抓到。不管怎么样,先写点记得住的吧。 最重要观点的是对你拥有的东西分了类:资产和负债。买来之后能带来收入的是资产,买来之后需要不断为其花费的是负债。或者,
2009-03-18 17:54:00 2014 1
原创 加解密简介
加密技术,签名技术的需要做到三防一确认。一防窃听,二防篡改,三防抵赖,确认对方身份。 在电子商务过程中,开始时必须确认对方身份,不然谈了半天,发现互联网那头真是一条狗,就悲剧了。 防窃听是指,即便有人在网络传输过程中得到了数据,看到的也是乱七八糟,无法从中得知正常的信息。举个例子,谈判前老总通过网络跟你商定了底价,不巧对方抓取到了此信息,如果没有合适的加密手段,他可能就
2009-03-16 14:36:00 1524
原创 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 2878 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 815
原创 C++代码行数
随机取了10个cpp和.h文件查行,一个cpp文件的平均行数是477, 一个.h文件的平均行数 是149。若有2000个文件,那大约代码在2000 / 2 *(477+149) = 63000行左右。
2007-06-25 11:20:00 1551
原创 微软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 716
原创 完成端口高效的三个原因
最近看了点完成端口的内容,一点心得记录如下:1.避免了select的查询,可以从socket直接定位到完成端口。想象同时上千个连接的程序中,别的模型里只能通过select的方式对所有的socket链接查询一次才能知道哪个socket上有事件;而完成端口模型中,一旦一个socket上有事件发生,它立即将事件组成一个完成包放入完成端口(实际上是个队列,放入完成端口的内部API是KeInsertQu
2007-05-23 19:01:00 2847
原创 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 1415
原创 程序优化
1.按照模块划分,找到对性能影响较大的模块,进行优化。临时叫做“模块化优化”。 2.分析每个线程的运行时间,对明显不合理的线程及其对应的功能和代码进行优化。 3.针对硬性指标: 1) 内存和虚拟内存:单纯看内存指标意义不大,应该综合的看内存和虚拟内存。 2) CPU运行时间:横向对比其他类似软件,可以看到IG占用的CPU
2007-03-06 18:10:00 866
原创 亲爱的,内存泄漏了
以前一直写在MSN Space上,可惜太慢了,转到这里混吧:)C++内存泄漏太常见了,开点常见小药方备案,由简单到复杂,分为8类:1.用Debug版本编译,退出时自动提示哪个文件哪一行泄漏。注意:使用此方法不能使用TerminateProcess。2.有时,第一种方法不能提供文件名和行号,而只能提供块号,此时可用_CrtSetBreakAlloc()在分配该块时下断点。注意:此方法要求每次
2007-02-26 17:08:00 1063
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人