摘要: 1. 去掉工程中添加的新类2. DirectUI3. MFC 文件操作4. http://www.cnblogs.com/jiaxiaoai/archive/2011/07/04/2097188.html5. ATL,COM6. 全局变量 阅读全文
posted @ 2011-10-26 10:03 shiney 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 功能:将整型数存放入字符数组中,并无间隔输出。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <memory.h>int main(){ char *sendd=(char*)malloc(100); char buf[10]; int len1,len2,len3; for(int i=0;i<10;i++) buf[i]='\0'; int a=21; unsigned long b=333333... 阅读全文
posted @ 2011-10-25 20:53 shiney 阅读(4866) 评论(0) 推荐(0) 编辑
摘要: 假如你和我一样是一只正在学习编程的菜鸟,那么下面的十个好习惯与你共勉之。1、设计规划。现在是模块化程序设计的天下,应用程序要实现的目标是金字塔尖,进行程序设计规划的意义就在于:对构成金字塔的基础模块进行划分,规划得越详细,模块分工越明确,越容易明白下一步该做什么。这好比搭积木的游戏,你可以把你的积木块组合成各种形状,但首先要熟悉每个积木块的功能。2、有备无患。实战之前,先找一些样例程序仔细研究,最起码明白怎么开头,怎么结尾,别打无准备之仗。3、葵花宝典。做一份所用程序语言的精简列表,包括基本数据类型、各类运算符说明、基本语句结构、常用关键词(保留字)、常用函数(控件)说明等。4、自由独立。为你 阅读全文
posted @ 2011-10-24 14:50 shiney 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 1. 静态变量2. 重写类的添加3. stdafx.h4. TRACE宏,VERYFY宏,ASSERT宏 Debug Assertion Failed 1。按F5运行你的程序 2。在出错时,选择“重试。 3。按ALT+7调出“调用栈”窗口 4。双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处。一般来说错误就出在这附近。你可以通过查看变量的值来确认。5. CRuntimeClass 对于MFC中每个从CObject派生的类来说,都有一个相关的CRuntimeClass结构体,在程序运行时可以访问该结构体来获取对象及其基类的信息。CRuntimeC 阅读全文
posted @ 2011-10-24 09:01 shiney 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定义如下:int g_Test;那么在使用的CPP文件中就应该使用:extern int g_Test即可,如果还是使用int g_Test,那么就会产生LNK2005错误,一般错误错误信息类似:AAA.obj error LNK2005 int book c?book@@3HA already defined in BBB.obj。切记的就是不能给变 阅读全文
posted @ 2011-10-20 16:12 shiney 阅读(27732) 评论(1) 推荐(4) 编辑
摘要: 一般认为在c中分为这几个存储区: 1. 栈--有编译器自动分配释放 2. 堆--一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3. 全局区(静态区)--全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束释放。 4. 另外还有一个专门放常量的地方。程序结束释放 在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的 阅读全文
posted @ 2011-10-12 14:40 shiney 阅读(3396) 评论(0) 推荐(1) 编辑
摘要: 一、正整数的十进制转换二进制:要点:除二取余,倒序排列解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果52除以2得到的余数依次为:0、0、1、0、1、1,倒序排列,所以52对应的二进制数就是110100。由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位....。于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个0。本文都以8位为例。那么:(52)10=(00110100)2二、负整数转换为二进制要点:取反加一解释:将该负整数对应的正整数先转换成二进制,然后对其“ 阅读全文
posted @ 2011-10-10 21:49 shiney 阅读(1208) 评论(1) 推荐(0) 编辑
摘要: 流是根据连续传输特性命名的一种信息序列,也可以认为是一种抽象的数据结构。流不能直接被随机读写,而可以顺序读写,因此如果要取得其中的数据需要的时间开销和数据的位置相关。作为对比,一般的连续线性表(例如储存在内存中的数组)可以根据下标作为索引在常数时间复杂度内定位至其中的任一位置进行读写(随机读写)。流可以用来抽象低速存储介质(不支持随机读写)中的信息,例如硬盘和网络文件等。在C语言中,流被实现为标准库实现的内部结构,通过文件指针(FILE*对象)可以表示流(外存储器中的文件也被作为流来进行读写),提供平台无关的操作方式。存在三种标准的流:标准输入流stdin、标准输出流stdout和标准错误输出 阅读全文
posted @ 2011-09-27 14:15 shiney 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输层服务,而IP则是提供网络层服务。TCP/IP包括以下协议:TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中实现。因此用户一般不涉及。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通过核外的应用程序才能实现,所以要使用套接字(socket)来实现。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个 阅读全文
posted @ 2011-09-23 16:05 shiney 阅读(313) 评论(0) 推荐(1) 编辑
摘要: InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。Invalidate()之后:...OnPaint()->OnPrepareDC()->OnDraw()所以只是刷新在OnPaint()和OnDraw()函数中的绘图语句。其它地方没有影响。Invalidate标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘。类似于PostMessage(WM_PAINT),需要处理到WM_PAINT消息时 阅读全文
posted @ 2011-09-16 23:30 shiney 阅读(11311) 评论(0) 推荐(0) 编辑