摘要:
前几天师弟调试程序的时候出现了这样一个错误,出错的位置是在delete [] 一个动态分配的数组时出现的。经过调查发现错误是因为他之前在给数组赋值的时候越界了1个位置。也就是double * a= new double [5],结果赋值的时候给a[5]=5。使用c++的同学都知道,一个5维的动态数组,调用时应该是0~4,但是这里给a[5]赋值并没有出错,反而是delete时才会出错。这其实是因为在动态分配内存的时候往往分配的是一个连续的地址,这一点从可以使用*[a+3]来取值就能够知道。因此,在动态分配的时候,会在数组界限外加一个用来标识数组范围的标志,例如a数组,就会在a[-1]和a[5]有 阅读全文
摘要:
声明,原文来源:http://www.cnblogs.com/helloj2ee/archive/2009/05/29/1491822.html1.求助MSDN我的第一步当然是求助MSDN。在MSDN里面有详细的解释。1.1WS_CLIPCHILDRENWS_CLIPCHILDREN样式从字面上可以理解成ClipChildren,裁减子窗口。MSDN里的E文解释:Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when cre 阅读全文
摘要:
父窗口 WS_CLIPCHILDREN 样式 对子窗口刷新的影响写了下面的程序,测试下父窗口设置 WS_CLIPCHILDREN前后,对父窗口调用 RedrawWindow或 InvalidateRect对子窗口刷新造成的影响操作有WS_CLIPCHILDREN无WS_CLIPCHILDRENInvalidateRect父窗口的无效区域增加对子窗口无影响父窗口的无效区域增加子窗口的无效区域增加且无效区域坐标相同(屏幕坐标系下)RedrawWindowFLAG: RDW_INVALIDATE父窗口的无效区域增加对子窗口无影响父窗口的无效区域增加子窗口的无效区域增加且无效区域坐标相同(屏幕坐标系下 阅读全文
摘要:
如果需要直接绘制ui,可以在ONPAINT里面绘制,只是这种方式不推荐。这种方式,常常会陷入刷新异常的深渊里面。如果自己的OnPaint代码什么也没做的话(至少没有声明过CPaintDC类型的变量),还必须调用一下CDialog::OnPaint,否则BeginPaint和EndPaint就没有办法被调用了。总之,在响应WM_PAINT消息的时候,必须调用一遍BeginPaint和EndPaint。调用的方法有三种:1、声明一个CPaintDC类型的变量(即使你什么也不画),CPaintDC的构造函数就是调用BeginPaint,析构函数就是调用EndPaint。2、调用基类的OnPaint( 阅读全文
摘要:
【PIDL简介】从Windows 95开始,微软公司为操作系统引入了新的外壳界面,新的外壳从根本上改变了应用程序同操作系统的结合方式,遗憾的是微软公司对于发布同外壳相关的编程信息方面显得很吝啬,可以得到的资料非常少,而且质量也不高。对于Delphi开发者来说,情况就更为严重了,因为几乎所有的Windows API 文档都是针对C/C++程序员的,但是Nothing is impossible,在本文中,我们将开始外壳编程的历险,就让我们从PIDL开始吧。编辑本段【PIDL外壳命名空间】新外壳系统中的一个核心概念就是命名空间(namespace),对于DOS来说,命名空间可以理解为就是整个文件系 阅读全文
摘要:
第十六章命名空间扩展探测器使用层次结构表述形成系统的许多对象——文件,文件夹,打印机,网络对象等等。这些对象组合定义了一个命名空间,这是一个封闭的符号或名字集合,其中任何给定的符号或名字都能成功地被唤醒。在命名空间中解析一个名字就是成功地连接给定的名字到某个它所表述的实际信息。探测器仔细地把所有这些对象收集到一起,与它们通讯,把它们的内容显示在典型的两窗框窗口中,树状观察在左侧,列表观察在右侧。我们实际所关注的是探测器是否支持插入代码到它的结构中并增加全新定制对象的接口。事实上,Windows本身就伴随一定数量的命名空间扩展,例子包括‘拨号网络’,‘我的公文包’,以及‘我的计算机’文件夹。在这 阅读全文
摘要:
第十五章SHELL扩展谈到Windows Shell编程,Shell扩展是最重要的科目之一,绝大多数商业应用的最酷特征的都是通过Shell扩展实现的,而且有许多显著的系统特征实际都是插入了扩展代码。Shell扩展尤其令人激动的是它允许你把你的应用作为Shell的一部分来处理。Shell扩展的另一个好处是微软正在使它变得更聪明,例如,‘查找’菜单,从Windows95到Windows98一直是通过Shell扩展增强的,而且增加了新条目。还有,出现在文档关联菜单上的位图项也是使用Shell扩展增加的。Shell扩展不仅是构建增加Shell功能模块的重要手段,而且也是使应用获得有力的Shell特征的 阅读全文
摘要:
第十四章设计Shell集成应用有一些工具可以使应用程序更紧密地与Shell和底层系统进行集成。也就是说,用户可以象处理系统文档和程序那样处理你的文档和程序。例如,右击文件来显示可用功能列表等。Windows为每一个文件提供默认的功能集,如‘打开…’,‘属性’,‘拷贝’等。是否能为特定的文档增加特殊功能。为此,我们必须客户化这个文档类的关联菜单。另一个应该与Shell集成的例子是:假设你的程序有建立空文档的能力,用户使用系统的‘新建’菜单项在任一文件夹上飞快地建立新文档,要想如此,就必须在系统注册表中记入一些信息。当然,这是特殊情形,作为开发人员和应用设计人员还应该重视许多其它有用的特征。在这一 阅读全文
摘要:
第十三章Windows脚本环境现在的许多开发人员以前都是在MS-DOS环境下编程的。几乎所有人都接触过批处理文件——一种基于文本命令的文件。这种文件使你能够在一个可执行命令中组合多个指令。批处理文件的语法相当简单,很容易编写。然而有些人认为批处理文件的语法过于简单。.bat文件的解释器对于识别某些基本的控制元素,如‘if’,是足够智能的,但是,对于提供现代的和功能强大的脚本环境,它就差得太远了。直到最近,Windows才给出了一个较好的机制——MS-DOS批处理文件仍然作为Windows的可执行文件机制,这就是Windows脚本环境(WSH)的引进。我们在这一章将看到WSH提供的支持要比.ba 阅读全文
摘要:
第十二章脚本Shell对象新的Windows Shell包含了丰富的新对象,这些新对象通过自动化体系提供了对Shell主要特征的完全访问能力。IE4.0在新版的shdocvw.dll中引进了这些COM新对象,并把它们作为核心部件。这些对象可以使你能编程驱动Shell和它的文件夹,并且在Internet客户SDK资料中(现在已经集成到平台SDK资料中)对这些对象有详细说明。由于这些对象是自动化服务器,因此使用VB、delphi、VC++所写的程序很容易使用它们。也可以使用脚本代码包括来自Windows脚本环境(WSH)的代码调用这些对象,下一章我们将介绍WSH。在这一章中,我们将调查Shell对 阅读全文