Welcome 微信登录

首页 / 软件开发 / C++

Win32结构化异常处理(SEH)探秘(上)

Win32结构化异常处理(SEH)探秘(上)

Win32结构化异常处理(SEH)探秘(上)2010-10-14 vckbase Matt Pietrek在 Win32 操作系统提供的所有功能中,使用最广泛但最缺乏文档描述的也许就是结构化异常处理了(SEH),当你考虑 Win32 结构化异常处理时,你也许会想到诸如 _try,_finally 以及 _except 这些术语。你能在任何有关 Win32 的书中发现对 SEH 很好的描述(即使是 remedial)。即便是 Win32 SDK 也具备有相当...
CGfxOutBarCtrl之提升篇

CGfxOutBarCtrl之提升篇

CGfxOutBarCtrl之提升篇2008-04-20本文代码运行效果图今天难得有空停下手中的活来收一下信箱的MAIL,很高兴能收到大家的来信,其中大多都是针对上期中的一篇文章:《CGfxOutBarCtrl之BUG篇》。看到大家热情洋溢的言语我想再次感谢VC知识库的朋友们!其中有几位朋友在来信中提到:如何在多文档程序中实现类似OutLook的菜单界面呢?我觉得这个问题问的很好,因为现在大多数的界面库(BCG/CJLibrary)演示程序都是建立Dial...
Win32结构化异常处理(SEH)探秘(下)

Win32结构化异常处理(SEH)探秘(下)

Win32结构化异常处理(SEH)探秘(下)2010-10-14 vckbase Matt Pietrek展开在挖掘展开(Unwinding)的实现代码之前让我们先来搞清楚它的意思。我在前面已经讲过所有可能的异常处理程序是如何被组织在一个由线程信息块的第一个DWORD(FS:[0])所指向的链表中的。由于针对某个特定异常的处理程序可能不在这个链表的开头,因此就需要从链表中依次移除实际处理异常的那个异常处理程序之前的所有异常处理程序。正如你在Visual C...
带文字的进度条

带文字的进度条

带文字的进度条2008-04-20 vc知识库 在下载安装的过程中,我们经常会看到带有文字的进度条,它能给人一种直观的概念。在VC中也有进度条的控件,但它不能显示文字。今有一CProgressCtrl类的派生类CTextProgressCtrl就有完成这样的工作。两种控件运行情况的对比如下: 下面介绍CTextProgressCtrl类的具体使用过程:1. 运行VC,建立一个名为progressDemo的基于对话框的程序,在对话框中加入两个progress...
工作中的C++:基本原理,重点推荐和结束语

工作中的C++:基本原理,重点推荐和结束语

工作中的C++:基本原理,重点推荐和结束语2010-10-14 MSDN Paul DiLascia目录基本原理抛弃托管扩展未来的乐趣编程的演变终极目标结束语,尽管不是再见这个月,我要改变常规的问答形式来告诉您关于我在网上发现的一个非常不错的文档。几个星期前,有人写信询问我,为什么他不能在 C++/CLI 中声明 const 函数:// 引用类ref class A { void f() const; // 不!};对此,我回复道:您就是不能,这是规则。...
增强GridCtrl

增强GridCtrl

增强GridCtrl2008-04-20界面预览: 在一个数据录入界面中有的数据项需要编辑录入,有的项需要选择录入,虽说有几个用ListCtrl做的扩展也基本能满足要求,总觉不好用,猛然发现有人用GridCtrl做的扩展,正合吾意。经过我的进一步完善,现在的代码在我的程序中已经能够很好的工作了。以下介绍一下两个新增接口:1、BOOL AddComboColumn(int iCol,CStringArray &comStr);将iCol列设置为用组合...
让C++也支持RMI

让C++也支持RMI

让C++也支持RMI2010-11-06 vckbase 王树栋由于没有类似java的“反射”机制,标准C++下实现RMI似乎有些困难。为C++程序员所熟悉的Boost库虽然有RCF实现了类似RMI的功能,但RCF本身需依赖于Boost::serlization支持,而serlization需要编译之后方可使用,且有诸多限制。本文试图通过C++特有的代码复用机制模拟实现具有类似RMI功能的类库,虽然不能完全实现java的RMI功能,...
类似EXCEL的报表类库(更新)

类似EXCEL的报表类库(更新)

类似EXCEL的报表类库(更新)2008-04-20 VCKBASE 我在 VCKBASE 《在线杂志》第二十四期中有一篇文章“类似EXCEL的报表类库”。这篇文章中的例子程序已经有最新版了,界面截图和文档内容也已更新。最新程序请从本文上方的链接处下载。20030907更新内容:1)开始在程序里支持图表显示2)修改了在打印部分的输出线条偶尔有重叠现象3)支持了在单元格里面放入下拉式列表20030807更新内容:1)这一版解决了打印预...
设计模式的解析和实现(C++)之一-Factory模式

设计模式的解析和实现(C++)之一-Factory模式

设计模式的解析和实现(C++)之一-Factory模式2010-11-06 cppblog 那谁作用:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。UML结构图:抽象基类:1)Product:创建出来的对象的抽象基类.2)Factory创建对象的工厂方法的抽象基类.接口函数:1)Creator::FactoryMethod:纯虚函数,由派生类实现,创建出对应的Product.解析:在这个模...
设计模式的解析和实现(C++)之二-Abstract Factory模式

设计模式的解析和实现(C++)之二-Abstract Factory模式

设计模式的解析和实现(C++)之二-Abstract Factory模式2010-11-06 cppblog 那谁作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。UML结构图:抽象基类:1)ProductA,ProductB:分别代表不同类型的产品,而它们的派生类则是这种产品的一个实现.2)AbstractFactory:生产这一系列产品的一个抽象工厂,它的派生类是不同的实现.接口函数:1)AbstractFactory::Cre...
CAnimateCtrl::Open的使用问题

CAnimateCtrl::Open的使用问题

CAnimateCtrl::Open的使用问题2008-04-20提出问题:使用CAnimateCtrl::Open( LPCTSTR lpszFileName )时,参数lpszFileName 是个字符串,表示AVI文件名。因此在分发应用程序时,除了分发可执行程序外,还必须单独分发AVI文件。是否有办法从资源中得到AVI文件?在这个程序中,如果要从外部获取文件是相当不方便的,万一谁不小心将文件删除或改名的话。。。。所以最好的方法是将文件作为资源存储在可...
设计模式的解析和实现(C++)之三-Builder模式

设计模式的解析和实现(C++)之三-Builder模式

设计模式的解析和实现(C++)之三-Builder模式2010-11-06 cppblog 那谁作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。UML结构图:适用于以下情况:1)当创建复杂对象的应该独立于该对象的组成部分以及它们的装配方式时。2)当构造过程必须允许被构造的对象有不同的表示时。抽象基类:1)Builder:这个基类是全部创建对象过程的抽象,提供构建不同组成部分的接口函数接口:1)Builder::BuildPa...
SDK实现分隔条

SDK实现分隔条

SDK实现分隔条2008-04-20Windows中的分隔条是一种被广泛使用的控件,绝大多数Explorer式样的应用程序都使用了这种控件。然而却很少有相关的资料对它的完整实现进行介绍,于是我自己实现了一个,希望对SDK的爱好者们有所帮助。事实上,分隔条也是一个很普通的窗口,它也拥有自己的窗口类、自己的窗口过程——就像所有的预定义控件一样。也就是说,要创建一个分隔条,也需要进行窗口类的注册和窗口的创建。以下的示例代码示范了如何注册一...
设计模式的解析和实现(C++)之四-Prototype模式

设计模式的解析和实现(C++)之四-Prototype模式

设计模式的解析和实现(C++)之四-Prototype模式2010-11-06 cppblog 那谁作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。UML结构图:抽象基类:1)Prototype:虚拟基类,所有原型的基类,提供Clone接口函数接口函数:1)Prototype::Clone函数:纯虚函数,根据不同的派生类来实例化创建对象.解析:Prototype模式其实就是常说的"虚拟构造函数"一个实现,C++的实...
如何在工具栏上添加平面下拉控件

如何在工具栏上添加平面下拉控件

如何在工具栏上添加平面下拉控件2008-04-20黎锦凡效果图如下: 使用过WordXP的人都知道,她的界面可谓是耳目一新。尤其是她的菜单和工具条可真是酷。网上也有很多很多的人都在模仿着她,包括很多的软件公司的产品。她的出现,使得软件界刮起了一陈XP界面时尚风。废话就不再多话了,言归正题,下面我就将实现的步骤一步步地告诉给你。第一步:新建一个单文档项目第二步:到资源编辑器中,新增一个工具项。里面没内容的,资源就命名为ID_TOOL_ZOOM吧。呵呵,新增一...
设计模式的解析和实现(C++)之五-Singleton模式

设计模式的解析和实现(C++)之五-Singleton模式

设计模式的解析和实现(C++)之五-Singleton模式2010-11-06 cppblog 那谁作用:保证一个类仅有一个实例,并提供一个访问它的全局访问点。UML结构图:解析:Singleton模式其实是对全局静态变量的一个取代策略,上面提到的Singleton模式的两个作用在中是通过如下的机制实现的:1)仅有一个实例,提供一个类的静态成员变量,大家知道类的静态成员变量对于一个类的所有对象而言是惟一的 2)提供一个访问它的全局访问点,也就是提供对应的访...
为列表控件添加水平滚动条

为列表控件添加水平滚动条

为列表控件添加水平滚动条2008-04-20Win32的标准控件之中,列表控件(ListBox)并没有和列表视图(ListView)一样提供水平滚动条,所以如果列表项的长度超过列表的宽度的话,那么超出的部分将无法显示。在本文中我将以一个简单的例子来说明如何使用SDK来解决这一问题,在这个例子中,我将为一个列表控件添加100行如下格式的文本:This is a very very very very very long sentence - line 1Th...
设计模式的解析和实现(C++)之六-Adapt模式

设计模式的解析和实现(C++)之六-Adapt模式

设计模式的解析和实现(C++)之六-Adapt模式2010-11-06 cppblog 那谁作用:将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。UML示意图1)采用继承原有接口类的方式2)采用组合原有接口类的方式解析:Adapt模式其实就是把完成同样的一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,这个模式使得复用旧的接口成为可能....
动态真彩工具栏

动态真彩工具栏

动态真彩工具栏2008-04-20 VCKBASE 王健源代码执行效果图如下: 与VCKBASE接触良久,从来都是贪婪的从中掘取好用的东东,却没想过把自己的东西拿出来与人共享,很不好意思。自从我的RangerChat点对点聊天工具在VCKBASE上发表以来收到众多朋友的来信。他们很多人都说一次性看这么多代码,还真不知如何从中提取自己想要的东西。现在奉上我做项目过程中的一些好的资源片段供大家评判。以后我会不间断的提供一些好的代码和大家分享。谢谢大家。第一个:...
<< 221 222 223 224 225 226 227 228 229 230 >>