C++ 指定位置输出-刷新屏幕

2009年7月20日 发表评论 阅读评论

C++的conio.h头文件取消了clrscr()刷新屏幕gotoxy()指定位置输出函数,不过在MSDN中有说明实现的方法。其中clrscr()比较简单,可以用system(“cls”);来模拟,但gotoxy()就得用到Console的一些函数了。  

下面来举个具体的例子来看看:

#include <time.h>
#include <stdio.h>
#include <dos.h>
#include <stdlib.h> /*clear scream*/
 
#define PI 3.14159
 
void showtime(int x,int y);
 
void main(void)
{
	showtime(28,12);
}
 
void showtime(int x,int y)
{
	int i=1;
	long ltime;
	system("pause");    //按任意键继续
	while(!i==0)
	{		
		time(&ltime);
		printf(ctime(&ltime));
		i++;
		system("cls");
	}	
}

上面的例子实现了刷新屏幕的功能。

至于指定位置输出,可以看一下我找到一个头文件myconio.h,在MSDN的Samples里面也有教的。

#ifndef   _MY_CONIO_H_FILE_INCLUDED   
  #define   _MY_CONIO_H_FILE_INCLUDED   
 
  #include<stdio.h>   
  #include<conio.h>   
  #include<windows.h>   
 
  #define   PERR(bSuccess,api)   {if(!(bSuccess))   printf("%s:Error   %d   from   %s   on   line   %dn",   
  __FILE__,GetLastError(),api,__LINE__);}   
 
  void   MyCls(HANDLE);   
  void   GotoConsoleXY(HANDLE,int,int);   
 
  inline   void   clrscr(void)   
  {   
  HANDLE   hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);   
  MyCls(hStdOut);   
  return;   
  }   
 
  inline   void   gotoxy(int   x,int   y)   
  {   
  HANDLE   hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);   
  GotoConsoleXY(hStdOut,x,y);   
  return;   
  }   
 
  void   MyCls(HANDLE   hConsole)   
  {   
  COORD   coordScreen={0,0};//设置清屏后光标返回的屏幕左上角坐标   
  BOOL   bSuccess;   
  DWORD   cCharsWritten;   
  CONSOLE_SCREEN_BUFFER_INFO   csbi;//保存缓冲区信息   
 
  DWORD   dwConSize;//当前缓冲区可容纳的字符数   
 
  bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//获得缓冲区信息   
  PERR(bSuccess,"GetConsoleScreenBufferInfo");   
  dwConSize=csbi.dwSize.X   *   csbi.dwSize.Y;//缓冲区容纳字符数目   
 
  //用空格填充缓冲区   
  bSuccess=FillConsoleOutputCharacter(hConsole,(TCHAR)'   ',dwConSize,coordScreen,&cCharsWritten);   
  PERR(bSuccess,"FillConsoleOutputCharacter");   
 
  bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//获得缓冲区信息   
  PERR(bSuccess,"ConsoleScreenBufferInfo");   
 
  //填充缓冲区属性   
  bSuccess=FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize,coordScreen,&cCharsWritten);   
  PERR(bSuccess,"FillConsoleOutputAttribute");   
 
  //光标返回屏幕左上角坐标   
  bSuccess=SetConsoleCursorPosition(hConsole,coordScreen);   
  PERR(bSuccess,"SetConsoleCursorPosition");   
  return;   
  }   
 
  void   GotoConsoleXY(HANDLE   hConsole,int   x,int   y)   
  {   
  COORD   coordScreen={x,y};   
  SetConsoleCursorPosition(hConsole,coordScreen);   
  return;   
  }   
 
  #endif   //_MY_CONIO_H_FILE_INCLUDED

通过上面的设置可以在C++中实现指定位置输出屏幕刷新功能。

http://it.dengchao.org
声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: C++ 指定位置输出-刷新屏幕
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.