`

完整例子

阅读更多
include <windows.h>
#include <stdio.h>

void ConPrint(char *CharBuffer, int len);
void ConPrintAt(int x, int y, char *CharBuffer, int len);
void gotoXY(int x, int y);
void ClearConsole(void);
void ClearConsoleToColors(int ForgC, int BackC);
void SetColorAndBackground(int ForgC, int BackC);
void SetColor(int ForgC);
void HideTheCursor(void);
void ShowTheCursor(void);

int main(int argc, char* argv[])
{
   HideTheCursor();
   ClearConsoleToColors(15, 1);
   ClearConsole();
   gotoXY(1, 1);
   SetColor(14);
   printf("This is a test...\n");
   Sleep(500);
   ShowTheCursor();
   SetColorAndBackgr
ound(15, 12);

   ConPrint("This is also a test...\n", 23);
   SetColorAndBackground(1, 7);
   ConPrintAt(22, 15, "This is also a test...\n", 23);
   gotoXY(0, 24);
   SetColorAndBackground(7, 1);
   return 0;
}                          

//This will clear the console while setting the forground and
//background colors.
void ClearConsoleToColors(int ForgC, int BackC)
{
   WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
   //Get the handle to the current output buffer...
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   //This is used to reset the carat/cursor to the top left.
   COORD coord = {0, 0};
   //A return value... indicating how many chars were written
   //not used but we need to capture this since it will be
   //written anyway (passing NULL causes an access violation).
   DWORD count;
  
   //This is a structure containing all of the console info
   // it is used here to find the size of the console.
   CONSOLE_SCREEN_BUFFER_INFO csbi;
   //Here we will set the current color
   SetConsoleTextAttribute(hStdOut, wColor);
   if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
   {
      //This fills the buffer with a given character (in this case 32=space).
      FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
     
      FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
      //This will set our cursor position for the next print statement.
      SetConsoleCursorPosition(hStdOut, coord);
   }
}

//This will clear the console.
void ClearConsole()
{
   //Get the handle to the current output buffer...
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   //This is used to reset the carat/cursor to the top left.
   COORD coord = {0, 0};
   //A return value... indicating how many chars were written
   //   not used but we need to capture this since it will be
   //   written anyway (passing NULL causes an access violation).
   DWORD count;
   //This is a structure containing all of the console info
   // it is used here to find the size of the console.
   CONSOLE_SCREEN_BUFFER_INFO csbi;
   //Here we will set the current color
   if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
   {
      //This fills the buffer with a given character (in this case 32=space).
      FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
      FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
      //This will set our cursor position for the next print statement.
      SetConsoleCursorPosition(hStdOut, coord);
   }
}

//This will set the position of the cursor
void gotoXY(int x, int y)
{
   //Initialize the coordinates
   COORD coord = {x, y};
   //Set the position
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

//This will set the forground color for printing in a console window.
void SetColor(int ForgC)
{
   WORD wColor;
   //We will need this handle to get the current background attribute
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   CONSOLE_SCREEN_BUFFER_INFO csbi;
  
   //We use csbi for the wAttributes word.
   if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
   {
      //Mask out all but the background attribute, and add in the forgournd color
      wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
      SetConsoleTextAttribute(hStdOut, wColor);    
   }
}

//This will set the forground and background color for printing in a console window.
void SetColorAndBackground(int ForgC, int BackC)
{
   WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
   SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);    
}

//Direct console output
void ConPrint(char *CharBuffer, int len)
{
   DWORD count;
   WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), CharBuffer, len, &count, NULL);
}

//Direct Console output at a particular coordinate.
void ConPrintAt(int x, int y, char *CharBuffer, int len)
{
   DWORD count;
   COORD coord = {x, y};
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleCursorPosition(hStdOut, coord);
   WriteConsole(hStdOut, CharBuffer, len, &count, NULL);
}

//Hides the console cursor
void HideTheCursor()
{
   CONSOLE_CURSOR_INFO cciCursor;
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  
   if(GetConsoleCursorInfo(hStdOut, &cciCursor))
   {
      cciCursor.bVisible = FALSE;
   }
}

//Shows the console cursor
void ShowTheCursor()
{
   CONSOLE_CURSOR_INFO cciCursor;
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  
   if(GetConsoleCursorInfo(hStdOut, &cciCursor))
   {
      cciCursor.bVisible = TRUE;
   }
}

分享到:
评论

相关推荐

    struts2完整例子

    这个“struts2完整例子”压缩包提供了学习和理解Struts2核心概念的实际示例。让我们深入探讨一下Struts2的关键知识点。 1. **MVC架构**:Struts2遵循MVC设计模式,它将业务逻辑(模型)、用户界面(视图)和应用...

    SpringCloud 全部完整例子

    这个压缩包"SpringCloud 15个完整例子"是学习和理解SpringCloud功能的绝佳资源,包含了从基础到高级的多种应用场景。 首先,让我们逐一解析这15个示例: 1. **Eureka Server**:这是SpringCloud中的服务注册中心,...

    jquery 实例完整例子

    "jQuery实例完整例子"提供了丰富的示例,帮助初学者和有经验的开发者更好地理解和应用jQuery库,尤其在创建高级特效方面。 在jQuery中,特效是其魅力之一,它们使网页更具吸引力和互动性。例如,`slideUp()`和`...

    vba写的完整例子加用户窗口操作选择文件读取文件等

    在这个"vba写的完整例子加用户窗口操作选择文件读取文件等"的案例中,我们将深入探讨VBA在实际应用中的几个关键知识点。 首先,**用户窗口操作**是指通过VBA创建的用户界面,通常使用UserForm来实现。UserForm可以...

    ExtJs完整例子ext+dwr

    ExtJs完整例子ext+dwr,希望能给需要地兄弟提供帮助

    web service 完整例子(绝对好)

    综上所述,这个“Web service 完整例子”涵盖了从设计、开发到部署和使用的整个Web服务生命周期,是学习和理解Web服务工作原理的宝贵资源。通过深入研究和实践这个例子,开发者可以更好地掌握Web服务技术,并将其...

    Jquery 整合 struts2 完整例子

    我们将详细介绍这个"Jquery 整合 struts2 完整例子",以及如何在myEclipse环境中进行操作。 jQuery是一个轻量级、高性能的JavaScript库,它极大地简化了DOM操作、事件处理、动画设计以及Ajax交互。它的API设计易学...

    kettle oracle循环分页迁移数据的完整例子,生成txt后FTP上传到远程服务器

    【标题】"kettle oracle循环分页迁移数据的完整例子,生成txt后FTP上传到远程服务器"揭示了几个关键的IT知识点,主要包括: 1. **Kettle(Pentaho Data Integration,PDI)**:Kettle是一款开源的数据集成工具,...

    jquerymobile设计完整例子

    在“jQuery Mobile 设计完整例子”中,我们将深入探讨这个框架的各个方面,包括登录页面的设计、菜单的实现以及菜单间的切换。 1. **登录页面设计** jQuery Mobile 提供了预定义的样式和布局结构,用于创建美观的...

    WPF摄影系统完整例子[按钮、浏览、菜单、样式]

    WPF摄影系统完整例子[按钮、浏览、菜单、样式] 源码打包奉上,需要的童鞋快来下载哈!

    全局鼠标HOOK完整例子

    在这个例子中,"全局鼠标HOOK完整例子" 提供了一个使用C#语言实现的DLL(动态链接库)和一个DEMO程序,它们共同展示了如何设置和使用鼠标HOOK。 首先,我们需要理解什么是HOOK。在Windows操作系统中,HOOK是一种...

    TCP通讯的完整例子

    在"TCP通讯的完整例子"中,我们通常会看到以下几个关键步骤和概念: 1. **建立连接**:TCP通信始于三次握手(Three-Way Handshake)。客户端发送一个SYN(同步序列编号)包给服务器,服务器回应一个SYN+ACK(同步+...

    JAVAWEB照相带完整例子

    "JAVAWEB照相带完整例子"是一个实际项目案例,它展示了如何在JavaWeb环境中集成摄像头功能,让用户能够通过网页进行拍照并进行相关处理。这个例子包含了前端用户界面以及后端服务器的交互逻辑。 首先,`webcam.jsp`...

    springmvc简单完整例子

    在这个“springmvc简单完整例子”中,我们将深入探讨Spring MVC的核心概念和技术细节。 1. **配置**: - **web.xml**: 这是Web应用程序的部署描述符,用于配置前端控制器`DispatcherServlet`。它将所有HTTP请求...

    Ext 完整例子(含Excel导出)

    "Ext 完整例子(含Excel导出)"这个资源显然是一个包含完整的Ext应用程序示例,特别强调了支持Excel数据导出的功能。这通常涉及到在Web应用中集成数据处理和文件生成的能力。 首先,我们要理解Ext的核心概念。它基于...

    ssh2整合完整例子

    在这个“ssh2整合完整例子”中,我们很可能会找到一个关于如何在不同的开发环境中集成SSH2协议的详细示例。SSH2通常用于在服务器之间建立安全的连接,例如进行远程命令执行、文件传输、隧道ing等操作。下面,我们将...

    jxl导出excel 完整例子工程

    jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程 jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程

    springMVC+dwr完整例子

    在"springMVC+dwr完整例子"中,我们主要会探讨以下几个关键知识点: 1. **SpringMVC基本概念**:SpringMVC提供了一个灵活的请求处理结构,包括DispatcherServlet、Controller、Model、View等组件。...

    ESP8266云端传感器网络完整例子

    这个“ESP8266云端传感器网络完整例子”提供了使用ESP8266构建云端数据采集平台的详细教程。下面我们将深入探讨其中涉及的关键知识点。 1. **ESP8266无线芯片**:ESP8266由乐鑫科技开发,集成了Wi-Fi功能和强大的32...

    kettle实现数据转换的完整例子

    在本示例中,"kettle实现数据转换的完整例子"展示了如何利用Kettle进行数据处理操作。这个压缩包可能包含了Kettle的工作流文件(ktr)和相关的数据库脚本,以便于用户理解并学习Kettle的数据转换过程。 1. **Kettle...

Global site tag (gtag.js) - Google Analytics