
技术
文章平均质量分 75
黄志义
这个作者很懒,什么都没留下…
展开
-
BHO
因为同学新公司的变态要求,禁用IE右键菜单,开始我建议直接用JS实现,同学说不能修改页面源码,估计页面是其他公司的,只好用BHO实现。由于BHO会对所有页面生效,只好在BHO里判断指定页面生效(很变态^_^)。 言归正传,直接创建ATL工程TestBHO,添加类TestBHOCtrl, class ATL_NO_VTABLE CTestBHOCtrl :原创 2010-05-19 23:29:00 · 1483 阅读 · 0 评论 -
WM_GETDLGCODE死循环问题
最近把原来的一个BCB工程改造成BCB的ActiveX控件,提供给MFC调用,原以为一切很顺利,没想到出现了很多意料之外的问题。 首先是BCB的线程同步方法Synchronize不起作用了,后来知道了是由于TApplication::Handle没有值导致的,查找了它的实现原理,需要在程序收到WM_NULL消息时调用CheckSynchronize()方法,我在Act原创 2010-05-20 21:04:00 · 3050 阅读 · 1 评论 -
BCB动态库和OCX里面CM_MOUSELEAVE和CM_MOUSEENTER消息的实现
由于改造封装一个BCB的OCX,在MFC里面调用,导致原来许多使用的CM_MOUSELEAVE和CM_MOUSEENTER消息失效,这两个消息是VCL的自定义消息,依赖于VCL的消息循环,源于TApplication.DoMouseIdle方法,而该方法由TApplication.Idle调用,Idle是TApplication.HandleMessage的消息处理循环的一部分。最终H原创 2010-06-18 09:59:00 · 1261 阅读 · 1 评论 -
IOCP客户端版本,异步connect
之前在网上看到一个服务端的IOCP模块,比较小巧,感觉还不错,后来在工作中,需要开发一个挂号的程序,监视大量服务器运行情况,初期连接数大概六七百,我就把这个IOCP模块改造成了一个客户端版本。后来发现由于是同步的connect,有时候会卡在connect过程很久,也不方便设置connect的超时,想到使用ConnectEx做异步连接,感觉ConnectEx过于繁琐,还得自己获取函数指针,必须要先调...原创 2014-06-11 12:41:36 · 5311 阅读 · 9 评论 -
LeaveCriticalSection有BUG?
偶然发现Windows API函数LeaveCriticalSection存在一个BUG原创 2014-05-06 16:25:26 · 1938 阅读 · 0 评论 -
自己实现IDispatch::Invoke方法
因为种种原因,在只能得到一个IWebBrowser指针的情况下要接收javascript的window.external.XXX调用,不得已自己实现了IDocHostUIHandler和IDispatch,为了使用方便,自己又需要实现类似MFC的DISPATCH_MAP:首先用一个结构体保存每个DISPATCH方法的ID,名字,this指针,函数地址,返回值类型,参数类型...原创 2012-08-04 00:07:06 · 3873 阅读 · 1 评论 -
Windows平台利用Interlocked系列api实现读写锁
Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(InitializeSRWLock,AcquireSRWLockShared,AcquireSRWLockExclusive等)。网上也有很多读写锁实现,基本上都是用互斥量对象和信号量对象实现。但是对于读写锁这种特殊的锁(锁住时间短)自旋的方式等待应该更合适,用Interlocked系列函数实现读写...原创 2019-08-12 20:12:32 · 429 阅读 · 0 评论