使用Microsoft Agent的COM接口编程(转)
使用Microsoft Agent的COM接口编程(转)[@more@]Microsoft Agent具有相当广泛的用途,我们既可以把它加入到普通应用程序中供本地系统使用,也可以把它嵌入到HTML文档中供 Internet/Intranet使用。Microsoft Agent支持C/C++、Visual Basic、Java、JScript和VBScript等多种编程语言,并为程序员提供了OLE自动化服务器和ActiveX控件两种编程方法,从本质上讲,这两种编程方法都属于OLE技术的范畴,都建立在COM (Component Object Model,组件对象模型)的基础之上。利用VC++的MFC类库或VB等支持ActiveX的编程工具可以很容易地调用ActiveX
C++继承性应用实例 日期和时间(转)
C++继承性应用实例 日期和时间(转)[@more@]本文给出一个关于继承性的综合例子,该例子编写一个有关日期(年、月、日)和时间(时、分、秒)的程序。该程序建立三个类,其中一个是日期的类Date,一个是时间的类Time,另一个是日期和时间类DateTime,它是前面两个类为基类的派生类。下面是该程序的源码:#include#include#includetypedef char string80[80];class Date{ public: Date() {} Date(int y, int m, int d) { SetDate(y, m, d); } void SetDate(int y, int m, int d) { Year = y; Month = m; Day = d; } void GetStri
C++类型转换时定义非成员函数(转)
C++类型转换时定义非成员函数(转)[@more@]《C++箴言:声明为非成员函数的时机》阐述了为什么只有 non-member functions(非成员函数)适合于应用到所有 arguments(实参)的 implicit type conversions(隐式类型转换),而且它还作为一个示例使用了一个 Rational class 的 operator* function。我建议你在阅读本文之前先熟悉那个示例,因为本文进行了针对《C++箴言:声明为非成员函数的时机》中的示例做了一个无伤大雅(模板化 Rational 和 operator*)的扩展讨论:templateclass Rational {public:Rational(const T& numerator = 0,
C++中用函数模板实现和优化抽象操作(转)
C++中用函数模板实现和优化抽象操作(转)[@more@]在创建完成抽象操作的函数时,如:拷贝,反转和排序,你必须定义多个版本以便能处理每一种数据类型。以 max() 函数为例,它返回两个参数中的较大者:double max(double first, double second);complex max(complex first, complex second);date max(date first, date second);//..该函数的其它版本尽管这个函数针对不同的数据类型其实现都是一样的,但程序员必须为每一种数据类型定义一个单独的版本:double max(double first, double second){ return first>second? first : second;}com
用C++ Builder检测Windows的启动模式(转)
用C++ Builder检测Windows的启动模式(转)[@more@]Windows 95/98的启动模式可以分为正常模式和安全模式,在安全模式下,有很多功能被限制使用,比如多媒体功能、网络功能等。有时,我们编写的程序正好需要这些被限制的功能,因此我们希望当程序运行时能自动检测当前Windows所处的启动模式是不是安全模式,以确定是否继续运行程序。那么如何在C++ Builder程序中检测当前的Windows是以正常模式还是安全模式启动的?这需要使用到API函数GetSystemMetrics来进行检测。 API函数GetSystemMetrics可以取得Windows的一些配置信息,比如,鼠标的按键
C++常用字符串处理函数及使用示例(转)
C++常用字符串处理函数及使用示例(转)[@more@]char *strcpy(char *s1, const char *s2)将字符串s2复制到字符串数组s1中,返回s1的值char *strncpy(char *s1, const char *s2, size_t n) 将字符串s2中最多n个字符复制到字符串数组s1中,返回s1的值char *strcat(char *s1, const char *s2)将字符串s2添加到字符串s1的后面。s2的第一个字符重定义s1的null终止符。返回s1的值char *strncat(char *s1, const char *s2, size_t n)将字符串s2中最多n个字符添加到字符串s1的后面。s2的第一个字符重定义s1的null终止符。返回s1的值int strcmp(const
C#实现Web文件上传的两种方法(转)
C#实现Web文件上传的两种方法(转)[@more@] 在Web编程中,我们常需要把一些本地文件上传到Web服务器上,上传后,用户可以通过浏览器方便地浏览这些文件,应用十分广泛。 那么使用C#如何实现文件上传的功能呢?下面笔者简要介绍一下。 首先,在你的Visual C# web project 中增加一个上传用的Web Form,为了要上传文件,需要在ToolBox中选择HTML类的File Field控件,将此控件加入到Web Form中,然而此时该控件还不是服务端控件,我们需要为它加上如下一段代码: ,这样它就成为服务端控件了,如果需要同时上传数个文件时,我们可以相应增加此控件
从模板中分离出参数无关的代码(转)
从模板中分离出参数无关的代码(转)[@more@]templates(模板)是节省时间和避免代码重复的极好方法。不必再输入20个相似的 classes,每一个包含 15 个 member functions(成员函数),你可以输入一个 class template(类模板),并让编译器实例化出你需要的 20 个 specific classes(特定类)和 300 个函数。(class template(类模板)的 member functions(成员函数)只有被使用时才会被隐式实例化,所以只有在每一个函数都被实际使用时,你才会得到全部 300 个member functions(成员函数)。)function templates(函数模板)也有相似的
用C++ Builder来定制系统菜单(转)
用C++ Builder来定制系统菜单(转)[@more@]通常在应用程序的主窗体中,利用鼠标左键点击左上角的图标,会弹出一个菜单,称之为“系统菜单”。在窗体中并没有系统菜单对应的组件,所以有时我们需要定制系统菜单时就比较麻烦。具体可以能过下面的步骤实现:在系统菜单上添加所需的菜单项。为新添加的菜单项定义OnClick事件的处理过程。下面的例程中,在系统菜单中添加了一个“前端显示(A)”菜单项,通过该菜单项,可以使窗体始终显示在最前端或为普通窗体模式。具体实现过程如下:1)通过菜单File|New Application创建一个新的工程。2)添加
C++语言代码检查工具PC-Lint简介(转)
C++语言代码检查工具PC-Lint简介(转)[@more@]概述PC-Lint 是一个历史悠久,功能异常强劲的静态代码检测工具。它的使用历史可以追溯到计算机编程的远古时代(30多年以前)。经过这么多年的发展,它不但能够监测出许多语法逻辑上的隐患,而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点,在很多专业级的软件公司,比如Microsoft, PC-Lint检查无错误无警告是代码首先要过的第一关,我个人觉得,对于小公司和个人开发而言,PC-Lint也非常重要,因为基于开发成本考虑,小公司和个人往往不能拿出很多很全面的测试,这时候,PC
用C语言实现常见的三种中文内码转换(转)
用C语言实现常见的三种中文内码转换(转)[@more@]常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持。网上也有很多中文内码的转换工具,但是在自己的程序中集成这些功能岂不是更好。Windows中提供了MultiByteToWideChar和WideCharToMultiByte两兄弟函数,足可以搞定这些功能了。以下四个函数分别实现:大五码转GBK码/GBK转大五码GB2312码转GBK码/GBK码转GB2312码于是有人要问了,为什么没有GB2312转BIG5和BIG5转GB2312呢,我
用C++程序删除文本文件中以“//”开头的行(转)
用C++程序删除文本文件中以“//”开头的行(转)[@more@]VC++只提供了删除一个空目录的函数,而用往往希望删除其下有很多子目录与文件的目录。为了实现这一功能,下面编写了DeleteDirectory 函数,它可以实现这一功能。函数原型:BOOL DeleteDirectory(char *DirName);返回值:成功删除时返回TRUE,否则返回FALSE参数DirName为要删除的目录名,必须为绝对路径名,如“c: emp"。函数定义如下:BOOL DeleteDirectory(char *DirName){CFileFind tempFind;char tempFileFind[200];sprintf(tempFileFind,"%s*.*",DirName);BOOL IsFinded=(BOO
用C语言技术进行CGI程序设计(转)
用C语言技术进行CGI程序设计(转)[@more@]一、CGI概述 CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程 序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互 ,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl、Fortran、Pascal、C语言等。但是用C语言编写的CGI程序具有执行速度快、安全性高(因为C语言
在C++程序中导出Word文档的方法(转)
在C++程序中导出Word文档的方法(转)[@more@]如果您要在应用程序中处理Word文档,可以参考MSDN. Lori Turner. Automating Microsoft Office 97 and Office 2000,该文内容详细全面,但是要在C++程序中导出Word文档,按照文中的方法来处理是很麻烦的,特别是需要填写的参数太多,所以我们考虑生成正确的VB脚本,然后执行生成Word文档的操作,这个方法的优点在于:一方面可以少填写参数;另一方面可以使用在Word中录制的宏脚本,而只需作少量的修改。我们给出了一些简单的函数来方便生成Word文档(主要是简单的表格)和直接运行内存中的VB脚本
学习C++编程语言的最大难度是什么(转)
学习C++编程语言的最大难度是什么(转)[@more@]困难度之一“C++ 是个难学易用的语言”,这句话相信很多人都心有戚戚。C++的学习难度,一在于语言本身太多的“幕”,另一个就在于 "paradigm shift" (思考模式的移转)。传统语言如 C, Pascal, Basic, Fortran...,除了模样看起来稍有不同,基本上都是函式 call 来 call 去,大同小异,很容易掌握。你想做的动作,在 code 中都看得一清二楚。你所看不到的,也不过就是编译器为你的函式加上用以处理堆叠的一小段码(prologue 和 epilogue),这一小段码基本上做的是 housekeeping 工作,你没看
VC++串口编程之短信应用开发(转)
VC++串口编程之短信应用开发(转)[@more@]前面数次连载我们以较长的篇幅讲解了串口通信的硬件原理、DOS平台控制以及基于WIN32 API、控件和第三方类的串口编程。作为本系列文章的最后一次连载,本章将给出一个典型的应用实例:西门子短信服务模块TC35的串口控制。 1.短信控制终端 作为短信 (Short Message Service,SMS)一族,想必你有这样的体会:用手机编辑短信息十分不便、容易出错,而且修改费时,若能用计算机来收发短信则方便许多。注意,本文所说的用计算机收发短信并不是说通过"网易短信王"等方式在Internet上收发短信,而是直
Visual C++ 6.0编程实现打印功能(转)
Visual C++ 6.0编程实现打印功能(转)[@more@]Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这个问题很复杂,不知道如何下手。本例针对这个问题,介绍一种简单的方法实现文字串的打印功能,读者朋友可以在此基础上稍微改动一下,就可以实现文件、图像的打印功能。 一、实现方法 在Windows操作系统下,显示器、打印机和绘图仪都被视为输出设备,正常情况下,系统默认的输出设备是显示器。要使用打
Stan Lippman:C++/CLI全景体验(转)
Stan Lippman:C++/CLI全景体验(转)[@more@] 最近我访问了中国的上海和北京,参加在两地举办的微软 Tech-ED 技术大会,在那里我非常荣幸地向大家介绍了我们在 C++/CLI 方面的工作。大家的反馈非常之好,特别是中国年轻一代程序员对 C++/CLI 的热爱和理解给我留下了深刻的印象。在那里,我还认识了来自上海的一位开发人员,同时也是一位技术作者, 李建忠先生。我们经过讨论之后决定合作撰写一系列 C++/CLI 方面的文章,并以“C++/CLI全景体验”专栏的形式独家授权于中国《程序员》杂志发表。这篇短文旨在为大家简单介绍一下我们写作这个专
体验C++中接口与实现分离的技术(转)
体验C++中接口与实现分离的技术(转)[@more@]在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。 下面用一个最简单的例子来说明。 类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下: lxTest.h文件内容:class ClxTest{ public: ClxTest(); virtual ~ClxTest(); void DoSomething();}; lxTest.cpp文
取长补短:Simulink与VC++6.0接口比较(转)
取长补短:Simulink与VC++6.0接口比较(转)[@more@]Simulink与VC应用程序接口一个显著的特点就是Simulink仿真必须依赖于 MATLAB系统,目前为止,MATLAB提供引擎方式将Simulink同VC应用程序的编程结合起来。要通过引擎方式将Simulink与VC结合起来首先要掌握VC与MATLAB通过引擎方式混合编程以及Simulink命令行仿真两方面的内容。MATLAB引擎方式函数库MATLAB引擎函数库是MATLAB提供引擎方式接口的一系列程序的集合,它允许用户用自己的C/C++语言或FORTRAN语言应用程序中对MATLAB进行调用,将MATLAB作为一个计算引擎使用,让其在后台运行,完成