Welcome 微信登录

首页 / 软件开发 / C++

C++中使用BHO来屏蔽特定网站

C++中使用BHO来屏蔽特定网站

C++中使用BHO来屏蔽特定网站2009-01-25 天极开发 谢启东BHO(浏览器辅助对象)是一种简单的ATL COM对象,而Internet Explorer会在每次运行时都加载它;换句话来说,即每个Internet Explorer的实例都会加载它。BHO运行在Internet Explorer的地址空间内,能对可访问的对象(如窗口、模块等等)执行任何操作,且因为它依附于浏览器的主窗口,所以其生命期与浏览器实例的生命期一致。如果在系统中打开了活动桌面...
ATL布幔之下的秘密(2)

ATL布幔之下的秘密(2)

ATL布幔之下的秘密(2)2010-11-22李马介绍在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所 使用的技术,这是本系列的第二篇文章。现在让我们来探究一些虚函数 背后更加有趣的资料。为了和上文保持一致,在本文的讨论中我将使用相同的顺 序,程序的序号从20开始。让我们看看下面这个程序:程序 20.#include <iostream>using namespace std;class Base {public: virtual ...
用C++控制DVD/CD驱动器的开关

用C++控制DVD/CD驱动器的开关

用C++控制DVD/CD驱动器的开关2009-01-25在Windows资源浏览器中,可在DVD/CD光驱图标上单击鼠标右键,选择"弹出"来打开光驱仓门,你可能也发现了,菜单中并没有"关闭"命令来关闭光驱。下面,就让我们用程序来控制打开、关闭光驱。程序的主要工作部分为CD_OpenClose(BOOL bOpen, TCHAR cDrive)函数://cDrive是光驱盘符,或者0x01为默认驱动器。//例如://C...
ATL布幔之下的秘密(3)

ATL布幔之下的秘密(3)

ATL布幔之下的秘密(3)2010-11-22李马介绍如果你是个模板的高手,你就可以将ATL的学习作为一种享受。 在这一节中,我将要尝试解释一些ATL使用的模板技术。我不能保证你读完本节 后能成为一个模板高手,只能是尽我所能让你在读完本文后能够更轻松地理解 ATL的源码。程序35.#include <iostream>using namespace std;template <typename T>T Maximum(const T...
C++中对浮点数的格式化显示

C++中对浮点数的格式化显示

C++中对浮点数的格式化显示2009-01-25 天极开发 谢启东在许多应用程序领域中,都需要控制小数点后的小数位,但是浮点数对此不能提供直接的支持。怎样对程序中的浮点数据进行"整齐"地格式化呢?在此我们有一个迂回的方法,先把它们转换为字符串,格式化后以文本形式显示出来。在日常编程中--包括对话框、关系数据库、金融程序、SMS程序及一切处理数据文件的程序,需要控制小数点后的小数位的情况非常普遍,本文中将要讲解如何用简单的方法来控制小数位...
ATL布幔之下的秘密(4)

ATL布幔之下的秘密(4)

ATL布幔之下的秘密(4)2010-11-22李马介绍到现在为止,我们还没有讨论过任何有关汇编语言的东西。但是 如果我们真的要了解ATL底层内幕的话,就不能回避这一话题,因为ATL使用了一 些底层的技术以及一些内联汇编语言来使它更小巧快速。在这里,我假设读者已 经拥有了汇编语言的基础知识,所以我只会集中于我的主题,而不会再另外写一 份的教程。如果你尚未足够了解汇编语言,那么我建议你看一看Matt Pietrek于1998年2月发表在Microsoft Sy...
在C++程序中添加逻辑流程控制

在C++程序中添加逻辑流程控制

在C++程序中添加逻辑流程控制2009-01-25谢启东问题的引出在计算机程序中,除了常见的执行流程控制,还有逻辑流程控制;有时,执行流程即为逻辑流程,但在大多数情况下还是有所区别的,例如,假定有一个Web服务器使用同步套接字读取HTTP请求,那么会编写如下的代码:void read(HTTP_REQUEST& http_request){read(http_request.header);read(http_request.body, http_...
ATL布幔之下的秘密(5)

ATL布幔之下的秘密(5)

ATL布幔之下的秘密(5)2010-11-22李马介绍很多人认为ATL只是用来编写COM组件的,其实你也可以使用ATL 中的窗口类来创建基于窗口的应用程序。虽然你可以将基于MFC的程序转换为ATL ,但是ATL中对于UI(译注:用户界面)组件的支持太少了。所以,这就要求你 需要自己编写很多代码。例如,在ATL中没有文档/视图,所以在你想使用它的时 候就需要自己实现了。在本篇中,我们将要探究一些关于窗口类的秘密,以及 ATL技术实现的秘密。WTL(Windo...
C/C++回调函数初探

C/C++回调函数初探

C/C++回调函数初探2009-01-25 天极 谢启东简介对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。什么是回调函数?简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。为什么要使用回调函数?因为可以把调用者与被...
MFC Activex录音机控件

MFC Activex录音机控件

MFC Activex录音机控件2010-11-22上一次的程序演示了怎样做一个录音机的程序,不过我的主要目的是要做一个能嵌入网、Director、authorware 等应用软件的ActiveX 控件,下面就来看以下基本实现方法。程序运行结果如下:图一为简单起见,本控件没有设置接口、属性、方法等等,基本的程序思路跟上一篇的类似,大家看源码,就晓得了。一个重要的心得就是,ActiveX 控件不过是提供了一系列接口的子窗口,通常情况下大家完全可以按照普通窗口...
C++/VC++编程疑难问题及解答(二)

C++/VC++编程疑难问题及解答(二)

C++/VC++编程疑难问题及解答(二)2009-01-27M. H. Li标准程序库问题,再谈list的迭代器是否可以随机移动?上篇文章中的"list的迭代器是否可以随机移动?"问题的回顾:由于list的内部实现是双向链表,链表就要求迭代器(指针)只能依次从前向后(或从后向前)移动,依次移动一个位置,因此list只定义了++和--操作符,而没有定义+、-、+=和-=等操作符。所以要想list的迭代器移动一段距离,就需要自己编程实现,用...
如何在MSWord中加入MSAgent

如何在MSWord中加入MSAgent

如何在MSWord中加入MSAgent2010-11-22赖锋在每天的工作中使用Word是必须的工作,在使用MSWord的时候,使用帮助能 帮助我们省下不少的时间,可是每天使用Word的时候都是对着限定的几个 Assistant, 感觉有点闷 ,当我在网上看到微软推出的MSAgent技术时,我想, 为何不可以有这些角色用到MSWord中去呢? 虽然不可能做到MSWord中的所有功能 ,不过,我想在MSWord中加入一些MSWord中的Assistant所没...
调用虚拟函数、持续化视图状态及POD类型概念

调用虚拟函数、持续化视图状态及POD类型概念

调用虚拟函数、持续化视图状态及POD类型概念2009-01-27Northtibet在 C++ 中,无法从某个类的构造函数中调用派生的虚拟函数,因为虚表还没有完全建立。但是在C#中好像就可以,是这样吗?为什么会有这种差别呢?确实如此,在这个方面 C# 与 C++ 是有差别的。在 C++ 中,如果你从构造函数或者析构函数中调用虚拟函数,编译器调用的虚拟函数是定义在这个正在被构造的类实例中的(例如,如果从 Base::Base 中调用 Base::SomeVi...
如何实现快捷方式中的查找目标功能

如何实现快捷方式中的查找目标功能

如何实现快捷方式中的查找目标功能2010-11-22 vckbase 梁永喜最近写一个开发辅助工具,在这个过程要做一个类似文件快捷方式中查找目 标的功能,先查MSDN98,大家不要见笑,我现在一直都用它,没有相应的API, 后又. Net 2003中的MSDN,找到了可以实现该功能的API, SHOpenFolderAndSelectItems()函数,它的原型如下:(具体用法参考 MSDN)“Opens a Microsoft® Wi...
C++中重载+操作符的正确方法

C++中重载+操作符的正确方法

C++中重载+操作符的正确方法2009-01-27 vckbase Danny Kalev摘要:本文概要性地介绍如何选择正确的策略来为用户定义类型重载 + 操作符。用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制。但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战。本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符。考虑如下的表达式:int x=4+2;内建的 + 操作...
在非MFC程序中引用CString

在非MFC程序中引用CString

在非MFC程序中引用CString2009-01-27 vckbase 阿半CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论。为了使用CString类,首先源文件必须是以c...
如何在Windows NT、Windows 2000和Windows XP中使用VDMDBG函数

如何在Windows NT、Windows 2000和Windows XP中使用VDMDBG函数

如何在Windows NT、Windows 2000和Windows XP中使用VDMDBG函数2010-11-29摘要即使是在 32位环境中编写程序,也经常碰到处理 16位应用程序的情况。在 Windows NT 中,16位程序是运行在虚拟 DOS 机(VDM)中的。VDMDBG.dll 包含许多处理16位程序的有用函数,这个库是 Platform SDK 的一部分。VDMDBG 中的函数提供了很好的方式在 VDM 中枚举、创建和终止 16位进程(任务)...
引用的作用

引用的作用

引用的作用2009-01-27 vckbase panic众所周知,引用作为函数参数可以避免参数对象的额外拷贝,对于非内置类型,一般而言可以获得更高的效率,同时比指针更安全,语义也更清晰。但是除此之外引用有什么特别的作用呢?在同一个作用域的引用,就像这样:void f(){ int i = 0; int &ri = i; //这里。 //...} 事实上,在f的内部,需要操作i的地方,完全可以直接使用i,而不必要使用ri间接操作,使用i在语义上更...
如何用Win32 APIs枚举应用程序窗口和进程

如何用Win32 APIs枚举应用程序窗口和进程

如何用Win32 APIs枚举应用程序窗口和进程2010-11-29摘要我们在编写程序时,常常遇到的一件事情就是要准确列出系统中所有正在运行的程序或者进程。Windows 任务管理器就是这样的一个程序。它既能列出运行的桌面应用程序,又能列出系统中所有运行的进程。那么,我们在程序中如何实现这样的任务呢?本文下面将详细讨论这个问题。枚举顶层(top-level)窗口枚举桌面顶层窗口相对于枚举进程来说可能要容易一些。枚举桌面顶层窗口的方法是用 EnumWindo...
<< 71 72 73 74 75 76 77 78 79 80 >>