博文

SetTimer函数的用法(2006-05-26 18:23:00)

摘要:1 )用WM_TIMER来设置定时器先请看SetTimer这个API函数的原型 UINT_PTR SetTimer(  HWND hWnd,              // 窗口句柄  UINT_PTR nIDEvent,      // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器  UINT uElapse,           // 时间间隔,单位为毫秒  TIMERPROC lpTimerFunc   // 回调函数);例如 SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了于是SetTimer函数的原型变为: UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD)) 当使用SetTimer函数的时候,就会生成一个计时器。函数中nIDEvent指的是计时器的标识,也就是名字。nElapse指的是时间间隔,也就是每隔多长时间触发一次事件。第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为NULL,也就是使用系统默认的回调函数,系统默认认的是onTime函数。这个函数怎么生成的呢?你需要在需要计时器的类的生成onTime函数:在ClassWizard里,选择需要计时器的类,添加WM_TIME消息映射,就自动生成onTime函数了。然后在函数里......

阅读全文(7086) | 评论:6

C++中获得当前系统时间 (2005-10-14 21:55:00)

摘要://方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #include <time.h> #include <stdio.h> int main( void ) {     time_t t = time( 0 );     char tmp[64];     strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );     puts( tmp );     return 0; } //方案二 优点:能精确到毫秒级;缺点:使用了windows API #include <windows.h> #include <stdio.h> int main( void ) {  SYSTEMTIME sys;  GetLocalTime( &sys );  printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);   return 0;} //方案三,优点:利用系统函数,还能修改系统时间 #include<stdlib.h>#include<iostream> using namespace std;void main(){    system("time");} //方案四,将当前时间折算为秒级,再通过相应的时间换算即可 #include<iostream>#include<ctime>using namespace std; int main(){ time_t now_time; now_time = time(NULL); cout<<now_ti......

阅读全文(16961) | 评论:2

C++的iostream标准库介绍(1)(2005-09-25 13:47:00)

摘要:                                                 作者:管宁 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个c++的标准库组件提供给程序员使用。   iostream为内置类型类型对象提供了输入输出支持,同时也支持文件的输入输出,类的设计者可以通过对iostream库的扩展,来支持自定义类型的输入输出操作。   为什么说要扩展才能提供支持呢?我们来一个示例。 #include   #include <iostream>  using namespace std;        class Test  {      public:          Test(int a=0,int b=0)          {              Test::a=a;        &n......

阅读全文(3912) | 评论:1

C++的iostream标准库介绍(2)(2005-09-25 13:41:00)

摘要:接下来我们继续看一下C++风格的串流控制,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。   stringstream类同时可以支持C++风格的串流的输入输出操作。   strstream类同时可以支持C风格的串流的输入输出操作。   istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。   他们的继承关系如下图所示:   istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。   istringstream的构造函数原形如下:   istringstream::istringstream(string str); //程序作者:管宁  //站点:www.cndev-lab.com  //所有稿件均有版权,如要转载,请务必著名出处和作者  #include <iostream>  #include <sstream>  using namespace std;  int main()   {  istringstream istr;  istr.str("1 56.7",);  //上述两个过程可以简单写成 istringstream istr("1 56.7");  cout << istr.str()<......

阅读全文(3474) | 评论:1

C++的iostream标准库介绍(3)(2005-09-25 13:37:00)

摘要:C语言提供了格式化输入输出的方法,C++也同样,但是C++的控制符使用起来更为简单方便,在c++下有两中方法控制格式化输入输出。   1.有流对象的成员函数。   例如,下列程序以成员函数的方式控制输出的精度: //程序作者:管宁  //站点:www.cndev-lab.com  //所有稿件均有版权,如要转载,请务必著名出处和作者    #include <iostream>  using namespace std;        int main()     {        float pi=3.14159f;      cout<......

阅读全文(3557) | 评论:1

一个很牛的计算pi的c程序(2005-09-23 14:29:00)

摘要:#include <stdlib.h>  #include <stdio.h>  long a=10000,b,c=2800,d,e,f[2801],g;  main()  {  for(;b-c;)    f[b++]=a/5;  for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)    for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);  }  计算结果:  3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342......

阅读全文(4559) | 评论:1

厦门大学2005c++年程序设计题(2005-09-23 13:18:00)

摘要:题目:1.    取胜之道Program国度的人,喜欢玩这样一个游戏,在一块板上写着一行数,共n个。两个游戏者,轮流从最右或最左取一个数。刚开始,每个游戏者的得分均为零。如果一个游戏者取下一个数,则将该数的值加到该游戏者的得分上,最后谁的得分最高谁就赢了游戏。给出这n个数( 从左往右), 假设游戏者都是非常聪明的,问最后两个人的得分(假设第一个人首先取数).输入格式:第一行为n(2<=n<=100),第二行为n个数,每个数字之间均用空格隔开。输出为两个游戏者的得分.第一个数表示第一个游戏者的得分,第二个数为第二个游戏者的得分,两个数字之间用空格隔开。如输入64 7 2 9 5 2输出18 11程序://主要算法思想是考虑题目中的"游戏者都是非常聪明"这句话#includeusing namespace std;const int N=20;int array[N];int mininum(int x,int y){    return x>y?x:y;}void defen(int x){    int count=0,firstscore=0,secondscore=0,i=0,j=x-1,mini1=0,mini2=0;loop:    mini1=mininum(array[i+1],array[j]);    mini2=mininum(array[i],array[j-1]);    if(count......

阅读全文(3423) | 评论:1