DrawDib函数组的使用
Microsoft的针对与设备无关位图(DIB位图),在其WIN32 SDK的Multimedia中提供了一组绘制DIB位图的高性能函数组──DrawDib函数组。DrawDib函数组是一组不依赖于图形设备接口(GDI)函数,而直接操作显存的函数组。它们支持8位、16位、24位和32位图象深度的DIB。总的来说,DrawDib函数组类似于StretchDIBits函数,它们都提供了将图象拉伸和抖动的功能,然而,DrawDib函数组还支持图象的解压、数据流以及更多的显示适配器。在某些情况下,DrawDib...
C++和Delphi的函数覆盖(Override)与重载(overload)
C++ 和 Delphi 的函数覆盖(Override)与重载(overload) Spacesoft【暗夜狂沙】 在面向对象编程中,当子类继承了来自基类的函数后,子类有可能需要对其中的一些函数作出与基类不同处理,比如: class CHuman { public: void SayMyName()//打印出对象的姓名 { cout "Hi, I am a human" endl; } }; 那么很明显,假如他的子类有一个同名、同参数和返回值(一句话,一摸一样)的函数SayMyName,它会调用哪个函数...
C/C++编程新手错误分析
(1)“我的程序都是对的,可结果不对” 想想你的周围,是不是也有人说这样的话?如果你也曾经说过,那就此打住,不要再说这句话,因为这句话只会显示说话者的无知。既然程序都是对的,那为什么结果不对? (2)“程序=算法+数据结构” 如果刚刚学完C语言,我们说这样的话,完全可以理解,而且可以说是正确的。但是如果你是一位即将从事C/C++编程的程序员,那么很遗憾,这个说法只能判错,殊不知,世界上还有另一种说法: 程序 = 对象+ 消息 “程序=算法+数据结构”只对面向过程的语言(C)成立,而对面向对象的语言(C+...
Code Style(代码的风格)
1. 简介 2. 什么是风格? 3. 代码的风格为什么如此重要? 4. 更少的工作,更多的文档? 5. 推荐的代码风格 6. 简单的文档 7. 输出风格 8. 结论 简介 让我们面对一下吧…如果您是一个资深的程序员,那么您总是在最后期限下工作并且您的最终目标是完成您设计的软件。如果您是个新手,您的努力是更多的研究、试验、当然还有错误和一心希望您的程序可以象打算的那样运行。不管怎样,当您的程序真的如愿以偿的运行时那种成功的感觉令人十分振奋,但更多的程序员发现能够用良好的风格生成程序内部代码时的那种自豪的感...
C++中获取WinNT/Win2k当前用户名和密码
// 获取WinNT/Win2k当前用户名和密码,调用以下函数即可: // bool GetPassWord(String strCurrDomain, String strCurrUser, String strCurrPwd) //--------------------------------------------------------------------------- typedef strUCt _UNICODE_STRING { USHORT Length; USHORT Maxim...
C++中的虚函数
一.简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次: class A { public: virtual void foo() { cout "A::foo() is called" endl;} }; class B: public A { public: virtual void foo() { cout "B::foo() is called" endl;} }; 那么,在使用的时候,我们可以: A * a =...
C++中处理XML文件
写Unmanaged Code在.NET时代成为一种很悲惨的事,当你需要处理XML文件时,这种感觉会变得尤其强烈。FCL中的System.XML多简单啊,连Steve Ballmer都知道怎么用。 事情不会总是那么理想的,如果你要在C/C++程序里处理XML怎么办呢? 选择一:市面上的XML lib还是有几个的,最有名的当然是libXML。我一年前用过,很不错,我还特意写了一份简明教程,后来不知搁哪儿了。 选择二:MS的MSXML,我要介绍的就是这个。 先说一下在MSDN哪里找文档吧,往下看的时候也好有...
C++语言代码检查工具PC-Lint简介
概述 PC-Lint是一个历史悠久,功能异常强劲的静态代码检测工具。它的使用历史可以追溯到计算机编程的远古时代(30多年以前)。经过这么多年的发展,它不但能够监测出许多语法逻辑上的隐患,而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点,在很多专业级的软件公司,比如Microsoft, PC-Lint检查无错误无警告是代码首先要过的第一关,我个人觉得,对于小公司和个人开发而言,PC-Lint也非常重要,因为基于开发成本考虑,小公司和个人往往不能拿出很多很全面的测试,这时候,PC-Lint的强...
回文数的形成
回文数的形成规则不知道数学上有没有证明。如果有的话,朋友可以告诉我,这里通过编程验证。 规则:任意的一个的十进制的整数,将其转过来后和原来的整数相加,得到新的整数后重复以上步骤,最终可以得到一个回文数。 #includestdio.h #define MAX 2147483648 //限制M+N的范围 long re(long int a)//求输入整数的反序 { long int t; for(t=0;a0;a/=10)//将整数反序 t=t*10+a%10; return t; } int nonr...
C++语言概述
C++语言是一种应用较广的面向对象的程序设计语言,使用它可以实现面向对象的程序设计。面向对象的设计与面向过程的设计是有很大区别的,面向对象的程序设计是在面向过程的程序设计的基础上一个质的飞跃。要学会面向对象的程序设计,首先要学会一种面向对象的语言,即要学会用VC编程,就要先有C++的基础,而学习C++语言首先要认识它面向对象的特性和实现面向对象的方法。 C++是一种面向对象的程序设计语言 当你首次学习C++时,总会碰到一些在C语言从未见过的概念,如:类、对象、抽象、封装、继承、多态性、虚函数等等。这些概...
二叉树实现源代码
二叉树实现源代码如下: #include conio.h #include stdio.h #include stdlib.h #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -2 typedef int status; typedef strUCt BiNode { char Data; struct BiNode* lChild; struct BiNode* rChild; }BiNode,*...
二叉树的几种运算方法
1.二叉树的前序遍历 先访问根结点,再访问左子树,最后访问右子树的次序访问二叉树中所有的结点,且每个结点仅访问一次. void preorder(BTree *p) { if(p!=NULL) { printf("%d",p-data); preorder(p-left); preorder(p-right); } } 2.二叉树的中序遍历 先访问左子树,再访问根结点,最后访问右子树的次序访问二叉树的所有结点,且每个结点仅访问一次. void inorder(btree *p) { if(p!=NULL...