
VC++
文章平均质量分 64
剑心1977
这个作者很懒,什么都没留下…
展开
-
浏览器控件的重绘问题
在有些情况下,窗口内嵌的浏览器控件不能及时重绘。例如,我们建立一个"消息提示窗",采用浏览器控件显示消息的内容。当我们采用AnimateWindow进行动画显示时,浏览器控件会显示一片空白。下面我们探讨浏览器控件的重绘问题。 重现场景。 //生成一个窗口(略)HWND hwnd=窗口handle.//内嵌浏览器控件。::AtlAxCreat原创 2007-05-16 11:03:00 · 3851 阅读 · 0 评论 -
vc++访问javascript(4)--原来函数也是对象
我们已经知道如何用VC++访问并调用javascript中的函数了。那么如何在VC++中实现一个函数,以便在javascript中进行调用呢?比如,我们用VC++提供一个函数绑定某个网页元素的onclick事件,当事件到达时,可以调用VC++中的这个函数。其实,在javascript中,函数(function)也是一个对象。从VC++的角度来看,当我们调用function时,事实上是在调用fu原创 2008-08-05 17:33:00 · 3106 阅读 · 0 评论 -
你注意到COM编程中“STA 单线程套间”的重入问题了吗?
在COM编程中,COM线程模型的选择是避免不了的。网上已有大量介绍“COM线程模型”的文章,在这里我只想说“STA 单线程套间”并不像想象中的那么简单,在实际的开发中会出现“重入问题”。“STA 单线程套间”,指的是一个线程只能建立一个套间,在线程中创建的COM对象只属于这个套间,其他线程对此线程中COM对象的调用都必须通过代理对象串行调用。这样,“STA 单线程套间”轻松解决了多线程之间的“原创 2008-08-28 00:09:00 · 1037 阅读 · 0 评论 -
详解:IE无法打开二级页面
一、现象有大量的网友遇到过“IE浏览器点击二级网页链接却无法打开”的现象。一般的解决方案是重新注册有关的dll文件。 重新注册以下DLL文件,在"开始"->"运行"对话框中逐条输入以下命令.regsvr32 Shdocvw.dll regsvr32 Actxprxy.dllregsvr32 Shell32.dllregsvr32 Oleaut32.dll regsvr32 Mshtml原创 2008-11-10 08:43:00 · 7319 阅读 · 0 评论 -
VC++中如何访问javascript中Array对象的元素
javascript中Array对象,可以采用索引的方式进行访问。比如:var oArray=new Array("zhang","wang","li");var sFirstItem=oArray[0]; 如果我们知道了在VC++如何实现索引属性,那么也就知道该如何去调用了。如何实现索引属性,请参考COM组件对象如何实现索引属性。下面是如何访问的代码: 1、取得指原创 2009-07-23 09:31:00 · 1017 阅读 · 0 评论 -
COM组件对象如何实现索引属性
在前面的系列文章中,我们知道了如何实现javascript和COM对象之间的互操作。在这里,我们再来看一个特殊的应用--索引属性。索引属性,就是让COM对象可以象一个数组一样的访问。比如,我们有一个COM对象实例oMyArray,在javascript中可以这样调用: //标准方式oMyArray.item(0)="test";alert(oMyArray.item(0));原创 2009-07-06 08:17:00 · 1670 阅读 · 0 评论 -
使用ITaskbarList3不必安装Windows 7 SDK
Windows7提供了全新用户体验的任务栏特性,比如Overlay Icons 和 Progress Bars。如果要实现这些特性,必须先得到taskbar的ITaskbarList3接口指针。因为VS2010还没有正式发布,所以使用VS2008及以下的版本,必须安装超过1个G的Windows 7 SDK,费时费力。其实,我们只需要自制一个头文件,对ITaskbarList3进行定义后,就可以原创 2010-01-28 09:48:00 · 4998 阅读 · 4 评论 -
容易疏忽的问题:CComVariant.ReadFromStream失败时的处理
在序列化与反序列化中,我们经常使用CComVariant.ReadFromStream从一个数据流中读取变量。常规的代码如下:HRESULT __PIMShell_AjaxList_Load(IStream* pStream){...CComVariant vValue=(bool)true;...HRESULT hr=vValue.ReadFromStream(pStre原创 2010-04-22 11:11:00 · 1316 阅读 · 0 评论 -
安装Visual Studio 2010之后如何显著提升性能?
第一时间安装了Visual Studio 2010正式版,发现不论是启动,还是编译都明显慢于VS2008。 一个G的内存很轻易地就被消耗殆尽,CPU占用一直都很低,硬盘一直狂转个不停。写不了几行代码,就要无所事事的歇一歇,严重的影响效率。可是为了使用最新版的MFC和VC动态运行库,又不得不使用VS2010。除了增加内存条来缓解慢的状况外,有没有其他的方案呢?经过一番测试发现,只要把Windows7原创 2010-04-23 13:16:00 · 2867 阅读 · 3 评论 -
vc++访问javascript(5)--绑定网页元素的事件
在VC++中绑定网页元素的事件(如onclick),通常会使用HTMLElementEvents2事件接口进行。大致如下:void CSomeObject:ConnectElement(IHTMLElement* pElement) {//取得连接点容器CComQIPtr pCPC=pElement; //查找连接点CComPtr pCP;pCPC->原创 2008-08-05 23:32:00 · 3921 阅读 · 1 评论 -
vc++访问javascript(2)--IDispatchEx是动态脚本语言的基础
IDispatch接口主要应用于传统的自动化编程,如著名的Microsoft Visual Basic。客户端程序只需得到COM组件的IDispatch接口就可调用组件所有的属性和方法。但IDispatch的局限在与它假定COM组件是静态的。也就是说,在运行期间,这些COM组件的属性和方法是不能改变的。因此,如果要实现javascript和vbscript脚本语言的动态特性,就需要一个更灵活原创 2008-08-04 23:38:00 · 5177 阅读 · 3 评论 -
vc++访问javascript(3)--遍历javascript中的数组
我们经常会遇到,将脚本中定义的多个参数打包到一个数组中,然后将这个数组传给一个组件方法。javascript和vbscript定义数组的方式是不同的。vbscript中的数组采用的是自动化兼容类型SAFEARRAY,使用VC++中的CComSafeArray类可以很方便的进行遍历。下面我们重点看看javascript中的数组如何进行遍历。一、javascript脚本中数组的定义javasc原创 2008-08-04 23:45:00 · 3125 阅读 · 1 评论 -
类实例跟踪统计管理器(源代码)
在用VC++开发COM组件时,某些类实例没有被析构,从而导致内存泄露。即使类实例最终被析构,但没有在运行中按期望及时的析构,也说明程序设计存在缺陷。我们当然可以在每个类的析构函数中设置一个断点,实时跟踪实例的析构情况。但如果用这种方法对大量的类实例进行跟踪,就显得太繁琐了。因此,我们可以设计一个机制,能自动跟踪类实例的创建和析构动作,并将统计信息实时的呈现出来(如写入IDE的output窗口,原创 2007-05-22 17:50:00 · 1468 阅读 · 0 评论 -
winrar实现自动备份攻略(一)--备份VC++项目的一个样例
自从开始使用winrar进行备份以来,我总是先选中要备份的目录,然后点右键,备份到指定的文件。如果里面有较大的目录和文件(如debug目录和.ncb文件)时,就需要先将它们放入回收站。这样做,显然非常繁琐,而且效率非常低,特别不适于进行每天的备份。可我仍然坚持以上的方法数年。这段时间,突然想解决备份的问题,于是上网查资料,查看winrar的帮助文件。大体的方案如下:1、建立一个“备份文件列表”。列原创 2007-06-01 00:32:00 · 1865 阅读 · 0 评论 -
winrar实现自动备份攻略(二)--自动化生成备份列表及忽略列表
在上一篇中,我们知道了用winrar进行自动备份需要的几个步骤。如制作“备份文件列表”和“忽略文件列表”,构造命令行参数。如果面对一个比较大的工程,特别是有多个解决方案,每个解决方案又有多个项目时,需要备份的目录和文件很多,而且需要忽略的目录和文件也很多。如果手动的制作“备份文件列表”和“忽略文件列表”,就会非常的繁琐。下面我推荐给大家两个自制的脚本文件("初始化备份列表.js"和"执行备份.js原创 2007-06-01 00:35:00 · 1625 阅读 · 0 评论 -
由于编码混乱导致中文乱码的恢复
在VC++的开发中,如果在中文环境下,源代码文件会默认保存为gb2312编码。如果换到英文环境下,就会用“western european”编码打开,文件中的“汉字注释”就会出现乱码,这当然不成问题,关键的是当代码太多,以至于我们觉察不到文件中有乱码的汉字时,再输入新的汉字时就会混乱。因为,在保存时,编辑器会提示你需要用unicode相关的编码进行保存。如果你选择了用UTF-8来保存,那么,恭原创 2008-05-10 00:19:00 · 6493 阅读 · 0 评论 -
vb般的VC++开发(1)--引言
初学编程时,总是在vb与vc++之间徘徊。vb简单易用,vc++强大灵活。遇到一个问题,经常是先看vb实现出来是什么样的,然后再尝试用vc++来实现。因为我始终看好vc++,知道真正强大的语言是生生不息的。所以,vc++的学习虽然很艰辛,但能沿途不断发现一些奇珍异宝,仍然是让我很兴奋的事。 话说回来,vb易用的一个主要领域是,对COM组件的调用。用vb调用COM组件的属性和方法原创 2008-07-23 19:26:00 · 1862 阅读 · 0 评论 -
vb般的VC++开发(2)--COM异常与safecall
在COM编程中正确的处理COM异常,是增强程序鲁棒性的基础。在delphi中有safecall的概念,在vb中虽然没有提及此概念,但仍然在使用。在vc中,需要手工支持。那什么是safecall,与COM异常又有什么关系呢? safecall其实是约定了COM组件的提供者与调用者之间调用的方式。 safecall首先是一个stdcall,也就是说COM组件暴露的所有接口方法采用与w原创 2008-07-24 13:43:00 · 2169 阅读 · 0 评论 -
vb般的VC++开发(4)--调用IDispatch接口的属性和方法
前面我们说过vb不仅支持一般的接口方法调用,还支持通过IDispatch接口进行自动化调用。通过#import,VC可以很好的支持一般的接口调用,但对IDispatch接口没有提供直接的支持。为了能方便的调用IDispatch接口,我们需要自己开发一个辅助类。我们先看一个例子:我们通过IDispatch接口调用IProvider接口中的属性和方法 __interfac原创 2008-08-01 17:17:00 · 4123 阅读 · 0 评论 -
vc++访问javascript(1)--window在脚本引擎中的作用
我们假定在VC++中已经得到网页的document指针,然后访问javascript有两种方法:一种是通过document.Script,另一种是通过document.parentWindow(以下直接用window)。它们都具有相同的效果,下面我们就以window为讨论的目标。 在实际的网页客户端脚本开发中,我们曾经混合使用过javascript和vbscript。由于java原创 2008-08-02 17:32:00 · 3590 阅读 · 0 评论 -
VC++访问javascript的系列文章
有些网友经常询问:在VC++中如何访问javascript中的对象、函数、变量等元素?这里把以前发表的一系列文章集中在一起,方便查阅。 vc++访问javascript(1)--window在脚本引擎中的作用 http://blog.youkuaiyun.com/pimshell/archive/2008/08/02/2758863.aspxvc++访问javascript(2)--IDi原创 2010-05-17 10:08:00 · 1552 阅读 · 0 评论