函数功能:该函数显示或隐藏光标。
函数原型:int ShowCursor(BOOL bShow);
参数:
bShow:确定内部的显示计数器是增加还是减少,如果bShow为TRUE,则显示计数器增加1,如果bShow为FALSE,则计数器减1。
返回值:返回值规定新的显示计数器。
备注:该函数设置了一个内部显示计数器以确定光标是否显示,仅当显示计数器的值大于或等于0时,光标才显示,如果安装了鼠标,则显示计数的初始值为0。如果没有安装鼠标,显示计数是C1。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;库文件:user32.lib。
在Windows环境下,一般采用“非阻塞”方式。对于客户端Socket来说,如果把Cli
entType特性设为ctNonBlocking,表示采用非阻塞方式进行连接。当位于另一端的服务
器端Socket试图进行读或写时,客户端Socket就会得到通知(OnRead事件或OnWrite事件
)。
try
{
//程序中抛出异常
throw value;
}
catch(valuetype v)
{
//例外处理程序段
}
语法小结:throw抛出值,catch接受,当然,throw必须在“try语句块”中才有效。
getchar()
函数名:getchar()
头文件:stdio.h
功 能:从I/O流中读字符
原 型:int getchar(void);
getch()
函数名:getch():
头文件:conio.h
功 能:从控制台读取一个字符,但不显示在屏幕上
原 型:int getch(void)
返回值:读取的字符
getche()
函数名:getche
头文件:conio.h
功 能:从控制台取字符(带回显)
用 法:int getche(void);
动态分配二维数组的程序
//////////////c用malloc和free//////////////////////////////
#include "stdio.h"
#include "stdlib.h"
void main()
{
int **p;
int i,j; [font=Comic Sans MS][color=#008000]//p[4][8]
//开始分配4行8列的二维数据
这是初学者问得最多的一个问题,所以这里有必要多费点笔墨。让我们先看一个结构体:
struct S1
{
char c;
int i;
};
问sizeof(s1)等于多少聪明的你开始思考了,char占1个字节,int占4个字节,那么加起来就应该是5。是这样吗你在你机器上试过了吗也许你是对的,但很可能你是错的!VC6中按默认设置得到的结果为8。
Why为什么受伤的总是我
请不要沮丧,我们来好好琢磨一下sizeof的定义——sizeof的结果等于对象或者类型所占的内存字节数,好吧
1。void *memset(void *s,int c,size_t n)
总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
2。例子
main(){
char *s="Golden Global View";
clrscr();
memset(s,'G',6);//貌似这里有点问题//
printf("%s",s);
getchar();
return 0;
}
3。memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
我们看下面的函数,函数体中只有一行语句:
double Average(double total, int number){
return total/number;
}
定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数的开销,会对应用程序的性能(时间+空间效率,这儿特指时间)有损失。例如,Average在一个循环语句中重复调用几千次,会降低程序的执行效率。
那么,有办法避免函数调用的开销吗?对于上面的函数,我么可以把它定义为内联函数的形式:
inline double Average(double total, int number){
return total/number;
}
函数的引入可以减少程序的目标代码,实现程序代码的共享。
n年以前,Charles Simonyi(他后来成为微软的著名程序员)设计了一种以前缀为基础的命名方法,这种方法后来称为"匈牙利表示法"以记念他.他的思想是根据每个标识符所代表的含义给它一个前缀.微软后来采用了这个思想,给每个标识符一个前缀以说明它的数据类型.因此,整型变量的前缀是n,长整型变量是nl,字符型数组变量是ca,以及字符串(以空类型结尾的字符数组)以sz为前缀.这些名字可能会非常古怪.比如说:lpszFoo表示"Foo"是一个指向以空字符为结尾的字符串的长整型指针.
这种方法的优点是使人能够通过变量的名字来辨别变量的类型,而不比去查找它的定义.遗憾的是,这种方法不仅使变量名字非常绕口,而且使改变变量类型的工作变得十分艰巨.在Windows3.1中,整型变量为16为宽.如果我们在开始时采用了一个整型变量,但是在通过30---40个函数的计算之后,发现采用整型变量宽度不够,这时我们不仅要改变这个变量的类型,而且要改变这个变量在这30--40个函数中的名字.
因为不切实际,除了一些顽固的Windows程序员外已经没有人再使用"匈牙利表示法"了.毫无疑问,在某种场合它依然存在,但大部分人现在已经抛弃它了.一般而言,输入前缀是一种糟糕的想法,因为它把变量于其类型紧紧地绑在了一起.
对于30行以下的函数,匈牙利方法一般有优势。尤其是对界面编程,有优势。但对于有强烈的算法要求、尤其是有很多抽象类型的C++程序,匈牙利方法简直是一个灾难。看你用在什么地方。现在有了很好的IDE工具,如:VC,SourceInsight等.选中变量,会自动提示告诉你它的声明和定义,这样匈牙利命名法就没有很大的必要了.无非就是为了程序可读性较好.实际上良好的代码书写习惯比强制使用匈牙利命名法更重要.系统性。整体性。可读性。分类要清楚。要有注释!
匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的,结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。下面将介绍匈牙利命名法,后面的例子里也会尽量遵守它和上面的代码风格。还是那句话,并不是要求所有的读者都要去遵守,但是希望读者作为一个现代的软件开发人员都去遵守它。
MFC、句柄、控件及结构的命名规范





