博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年12月5日

摘要: #include <iostream>using namespace std;#include <conio.h>#define MAX_ARRAY_BUFF 12#define CHAR_ENTER '\r'#define CHAR_BACK '\b'#define DELETE(p) \{\if(p)\{\delete(p);\p=NULL;\}\}#define BACK_HANDLE \{\putchar('\b');\putchar(' ');\putchar('\b');\}cl 阅读全文

posted @ 2011-12-05 11:37 ccmfc 阅读(172) 评论(0) 推荐(0) 编辑

2011年12月4日

摘要: 一、宽字节转窄字节char* wstr2asc(const short *pSrc, char *pDest){ char *pTmp=pDest; char ctmp=0; short stmp=0;if (NULL==pSrc)return NULL;while (*pSrc) { ctmp=*pSrc; stmp=*pSrc;if (ctmp<0) { *pTmp++=stmp; *pTmp|=(stmp>>=8); } else { *pTmp=*pSrc; } pSrc++; pTmp++; } *pTmp='\0';return pDest;}in 阅读全文

posted @ 2011-12-04 18:23 ccmfc 阅读(275) 评论(0) 推荐(0) 编辑

2011年2月28日

摘要: 窗口区无效是什么意思? 无效就是被其它程序盖住了,盖它的程序关了,它又要显示出来,所以这个函数,可以发消息给被盖住的程序再重新绘制自己。 通俗的说就是擦除你在窗口上画的图,让窗口重新调用OnDraw函数 InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。Invalidate()之后:...OnPaint()->OnPrepareDC()->OnDraw()所以只是刷新在OnPaint()和OnDraw() 阅读全文

posted @ 2011-02-28 21:57 ccmfc 阅读(1940) 评论(0) 推荐(0) 编辑

2011年1月5日

摘要: strategy.h头文件#ifndef STRATEGY_H #define STRATEGY_H#include qstring.h#include ctype.h#include string.hclass CashSuper{public: virtual double GetCashResult(const double &money)=0;};class CashNormal:public CashSuper{public: double GetCashResult(const double &money) { return money; }};class CashRe 阅读全文

posted @ 2011-01-05 11:20 ccmfc 阅读(1054) 评论(0) 推荐(1) 编辑

2011年1月3日

摘要: #include <stdio.h>void showrhomb1(const int num){int i=1;int j=1;for(; i<=num; i++){for(j=1; j<=num-i; j++)printf(" ");for(j=1; j<=2*i-1; j++)printf("* ");printf("\n");}for(i=1; i<num; i++){for(j=1; j<=i; j++)printf(" ");for(j=1; j<=2*( 阅读全文

posted @ 2011-01-03 20:39 ccmfc 阅读(208) 评论(0) 推荐(1) 编辑

摘要: #ifndef ARITHOPERATOR_H#define ARITHOPERATOR_H#define EPS 0.000000000001class ArithOpe{public: virtual double GetArithOpeResult()const { return 0.0; } double GetArithOpeNum1()const { return this-m_num1; } double GetArithOpeNum2()const { return this-m_num2; } void SetArithOpeNum1(const double& num1 阅读全文

posted @ 2011-01-03 13:58 ccmfc 阅读(781) 评论(0) 推荐(0) 编辑

2010年12月27日

摘要: //linux与windows下都行,支持用户输入BACKSPACE时可以删除之前输入的,输入ENTER时,打印出密码#include stdio.h#include string.h#include assert.h#if _WIN32//编译开关#include conio.h#define BACKSPACE 8#define ENTER 13#endif#if unix//编译开关#include termios.h#include unistd.h#define BACKSPACE 127#define ENTER 10#endif#define MAX_SI 阅读全文

posted @ 2010-12-27 22:41 ccmfc 阅读(1288) 评论(0) 推荐(0) 编辑

2010年11月12日

摘要: c++内存到底分几个区?一:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放。4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。5、程序代码区—存放函数 阅读全文

posted @ 2010-11-12 19:51 ccmfc 阅读(1541) 评论(0) 推荐(0) 编辑

2010年11月8日

摘要: http://blog.csdn.net/yah99_wolf/archive/2009/03/31/4039493.aspx如果你问一个IT人士“C++如何实现类似Java的反射?”,结果会怎样呢?~!@#¥%……&*,估计大部分人都会要稍微思考了一下,或者直接说“C++根本就不支持反射的呀!”。是的,C++语言本身是不支持反射的,但实际应用中总是会有将对象序列化的需求,总不可能C++不支持,我们就不用C++了,既然发明C++的大师们没有考虑这个,那我们只有自己动手了,毛主席说过“自己动手,丰衣足食”!天生限制C++语言本身不支持反射机制,但C++对象总是要序列化的,序列化就是存储到磁盘上, 阅读全文

posted @ 2010-11-08 19:42 ccmfc 阅读(1573) 评论(0) 推荐(0) 编辑

摘要: #include "iostream"using namespace std;class IUser{public:virtual void fun() = 0;};class SqlUser : public IUser{public:void fun(){cout"Sql USER"endl;}};class AcessUser : public IUser{public:void fun(){cout"access USER"endl;}};class IDepartment{public:virtual void fun() = 0;}; class sqlDepart 阅读全文

posted @ 2010-11-08 19:41 ccmfc 阅读(611) 评论(0) 推荐(0) 编辑