在C++ Builder中使用游戏操纵杆
在Windows环境下通过编程来操纵鼠标、键盘是一件再简单不过的事了,不过大家有没有想过要尝试一下另一样我们比较常见的输入工具——游戏操纵杆呢?在某些情况下,尤其是象编制一些小型的游戏软件的时候,加入对游戏操纵杆的支持可以给使用者提供更为友好的人机界面,极大的提高游戏软件的可玩性。
C++Builder中没有专门控制 ...
C++内存管理变革(2):最袖珍的垃圾回收器
概述
C/C++最被人诟病的,可能是没有一个内存垃圾回收器(确切是说没有一个标准的垃圾回收器)。本文讨论的内容要点是,在C/C++中实现一个最袖珍的、功能受限的垃圾回收器。这个垃圾回收器区别于其他垃圾回收器的主要特征是:
1. 袖珍但具实用性。整个垃圾回收器代码行数100行左右(不含空白行),相当小巧。相对而言,它的 ...
教你用C++ Builder实现VFP数据库开发
C++Builder拥有卓越的数据库网络开发功能,可以存取各种关系型数据库,提供高效的数据感知组件和数据存取组件,它不仅可为C/S结构提供客户端程序,而且可开发应用服务器程序,实现多层数据库应用程序体系结构,是VFP数据库进行网络开发的最佳选择。
VFP数据库系统有两种方式建立数据表,一种是建立与FoxPro兼容的自由表,另 ...
构造函数中的this指针
-------------------------------原理-------------------------------
某些人认为不应该在构造函数中使用this指针,因为这时this对象还没有完全形成。
但是,只要小心,是可以在构造函数中使用this指针的:
●在函数体中
●初始化列表中
因为“对象还没有完全形成”不意味着“什么都没有”。
在进入构造函数(及其chaining ...
整数的素数和分解
【问题描述】
歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之和。对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。对于一个给定的整数,输出所有这种素数和分解式。注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式)。
例如,对于 ...
设计模式的解析和实现(C++)之二-Abstract Factory模式
作用:
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
UML结构图:
抽象基类:
1)ProductA,ProductB:分别代表不同类型的产品,而它们的派生类则是这种产品的一个实现.
2)AbstractFactory:生产这一系列产品的一个抽象工厂,它的派生类是不同的实现.
接口函数:
1)AbstractFactory::CreateProductA和Abst ...
设计模式的解析和实现(C++)之五-Singleton模式
作用:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
UML结构图:
解析:
Singleton模式其实是对全局静态变量的一个取代策略,上面提到的Singleton模式的两个作用在C++中是通过如下的机制实现的:1)仅有一个实例,提供一个类的静态成员变量,大家知道类的静态成员变量对于一个类的所有对象而言是惟一的 2)提供一个访问 ...
我做的一个C++用的Serialization库(含部分源码)
众所周知,boost里面有一个Serialization。不过我这个跟boost的有本质上的差别。boost的Serialization是通过重载操作符将一个对象与一个流进行读写,而我则通过记录类的成员变量来自动产生相应的读写动作。
不过我的Serialization库有两个缺点,就是效率不是特别高,因为我产生的是可以与XML进行互相转换的通用对象。虽然这 ...
C++ Builder 2007中使用dbExpress开发firebird数据库
这几天刚从cb6升级到cb2007,有个自己写的程序使用dbExpress开发firebird数据库,连接不上,在网上找了一些资料,自己又摸索了一些cb2007的新功能,介绍给大家。
首先声明,本人不是专职程序员,编程只是爱好,以下方法并不是我最先发现的,我只是整理一下,并给那些还在cb6下开发的兄弟介绍点cb2007的新东西。为了迎接cb20 ...
设计模式的解析和实现(C++)之十二-ChainOfResponsibility模式
作用:
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.
UML结构图:
抽象基类:
1)Handler:定义一个处理请求的接口,在图中这个接口就是HandleRequset函数,这个类同时有一个指向Handler对象的指针,指向后续的处理请求的对象 ...
设计模式的解析和实现(C++)之十四-Command模式
作用:
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作.
UML结构图:
解析:
Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver类中,由调用这个命令的类也就是这里的Invoker类来调用.其实 ...
设计模式的解析和实现(C++)之八-Composite模式
作用:
将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
UML结构图:
抽象基类:
1)Component:为组合中的对象声明接口,声明了类共有接口的缺省行为(如这里的Add,Remove,GetChild函数),声明一个接口函数可以访问Component的子组件.
接口函数:
1)Component::Oper ...
深入分析驴子系列(2)
在 BOOL CemuleApp::InitInstance() 函数 的 672行(VERIFY( (m_hTimer = ::SetTimer(NULL, NULL, 300, StartupTimer)) != NULL );
) 启动一个定时器 在该定时器的 执行函数( void CALLBACK CemuleDlg::StartupTimer(HWND /*hwnd*/, UINT /*uiMsg*/, UINT /*idEvent*/, DWORD /*dwTime*/))
的 814 行 theApp.emuledlg->O ...
C++数值--字符串间转换方法总结
C/C++中相关的转换方法主要有如下几种:
(一)、使用CRT库中的转换函数族。
_itoa, _itow 及其反转换 atoi, _wtoi
_ltoa, _ltow 及其反转换 atol, _wtol
_ultoa, _ultow
_ecvt, _fcvt, _gcvt 及其反转换
_atodbl, _atoldbl,_atoflt
...(太多了,不想写了)
使用此方法的优点:是C标准库中函数,现成可用且可移植(部分为 ...
设计模式的解析和实现(C++)之十五-Observer模式
作用:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.
UML结构图:
解析:
Observer模式定义的是一种一对多的关系,这里的一就是图中的Subject类,而多则是Obesrver类,当Subject类的状态发生变化的时候通知与之对应的Obesrver类们也去相应的更新状态,同时支持动态的 ...
观察者模式(Subject/Observer)
定义:对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
功能:搜索数据库,当有需要公布的数据将其用各种方式发送出去。
观察者模式无疑能很好的做到上面的要求,无论要多少种方式,只要增加多个继承之ITransfer接口的派生类即可,有很好的维护性。
以下是实际的应用.
...
自定义函数使用map排序
#pragma warning(disable:4786)
#include
#include
#include
#include
using namespace std;
/* 从小到大排序 */
struct ltstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) MYDATAMAP;
typedef MYDATAMAP::iterator Itermydata;
int main(int argc, char* argv[])
{
MY ...
扩展NetBeans IDE 6.0中的C/C++编辑器以提供标记实例的高亮
教程需求
在继续前,请确保您重新检查了本节的需求。
先决条件
本 教程假设您已经有一些使用 IDE 的基本知识和 Java 编程经验。
本教程所需的软 件
在开始前,您需要安装 NetBeans 6.0。您将同时需要 C/C++ 和 Java SE 支持,所 以最佳选择是选择“下载全部”选项并在安装时排除 Base IDE、Java SE 和 C/C++ 包之外的所有模 ...
标准C/C++程序通过gSOAP调用WebService
一、环境准备
在本文中,所有程序均在Linux下开发完成,经测试能够正常运行。
在开发过程中,我们需要用到gSOAP,可以从以下网址下载获得: http://www.cs.fsu.edu/~engelen/soap.html
我下载的是gsoap_2.7.12.tar.gz
下载下来解压缩,按正常安装过程进行编译、安装。
# tar zxvf gsozp_2.7.12.tar.gz
# cd gsoap_2.7.12
# ...
深入分析驴子系列(1)
一直在看驴子的代码,网上进行深入分析的文章不多,也许 这和驴子的代码量太大, 代码质量不高也许有关系。但更多的也许是不想分享,舍不得分享。其实,它本身就是开 源的 不分享人家慢慢看也能看懂 。由于时间关系 我会陆续把分析的文章帖上来,与各 位网友分享,也希望大家拍砖 进行讨论 也把你的心得分享出来。。系列分 ...