winconsio.h:一个用于在windows平台替代conio.h的自用库

 1 #ifndef WIN_CONS_IO_H
 2 #define WIN_CONS_IO_H
 3
 4 #include <windows.h>
 5
 6 #define SetConsColor(colorIndex) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), colorIndex)
 7 #define BeginFGRed SetConsColor(FOREGROUND_RED)
 8 #define BeginFGBlue SetConsColor(FOREGROUND_BLUE)
 9 #define BeginFGGreen SetConsColor(FOREGROUND_GREEN)
10 #define BeginFGAuto SetConsColor(FOREGROUND_INTENSITY)
11 #define BeginBGRed SetConsColor(BACKGROUND_RED)
12 #define BeginBGBlue SetConsColor(BACKGROUND_BLUE)
13 #define BeginBGGreen SetConsColor(BACKGROUND_GREEN)
14 #define BeginBGAuto SetConsColor(BACKGROUND_INTENSITY)
15
16 void cls(void)
17 {
18    //Get the handle to the current output buffer...
19    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
20    //This is used to reset the carat/cursor to the top left.
21    COORD coord = {0, 0};
22    //A return value... indicating how many chars were written
23    //   not used but we need to capture this since it will be
24    //   written anyway (passing NULL causes an access violation).
25    DWORD count;
26    //This is a structure containing all of the console info
27    // it is used here to find the size of the console.
28    CONSOLE_SCREEN_BUFFER_INFO csbi;
29    //Here we will set the current color
30    if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
31    {
32       //This fills the buffer with a given character (in this case 32=space).
33       FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
34       FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
35       //This will set our cursor position for the next print statement.
36       SetConsoleCursorPosition(hStdOut, coord);
37    }
38 }
39
40 #define gotoXY(x, y) SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), {x, y})
41
42 void hideCur(void)
43 {
44    CONSOLE_CURSOR_INFO cciCursor;
45    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
46
47    if(GetConsoleCursorInfo(hStdOut, &cciCursor))
48    {
49       cciCursor.bVisible = FALSE;
50       SetConsoleCursorInfo(hStdOut, &cciCursor);
51    }
52 }
53
54
55 void showCur(void)
56 {
57    CONSOLE_CURSOR_INFO cciCursor;
58    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
59
60    if(GetConsoleCursorInfo(hStdOut, &cciCursor))
61    {
62       cciCursor.bVisible = TRUE;
63       SetConsoleCursorInfo(hStdOut, &cciCursor);
64    }
65 }
66
67
68 char getCh (void)
69 {
70   HANDLE hStdin = GetStdHandle (STD_INPUT_HANDLE);
71   INPUT_RECORD irInputRecord;
72   DWORD dwEventsRead;
73   char cChar;
74
75   while(ReadConsoleInputA (hStdin, &irInputRecord, 1, &dwEventsRead)) /* Read key press */
76     if (irInputRecord.EventType == KEY_EVENT
77     &&irInputRecord.Event.KeyEvent.wVirtualKeyCode != VK_SHIFT
78     &&irInputRecord.Event.KeyEvent.wVirtualKeyCode != VK_MENU
79     &&irInputRecord.Event.KeyEvent.wVirtualKeyCode != VK_CONTROL)
80     {
81       cChar = irInputRecord.Event.KeyEvent.uChar.AsciiChar;
82     ReadConsoleInputA (hStdin, &irInputRecord , 1, &dwEventsRead); /* Read key release */
83     return cChar;
84     }
85   return EOF;
86 }
87
88 typedef struct pos { int x, int y; } posT;
89 #define UpPos(pos) { pos.x - 1, pos.y }
90 #define DownPos(pos) { pos.x + 1, pos.y }
91 #define LeftPos(pos) { pos.x, pos.y - 1 }
92 #define RightPos(pos) { pos.x, pos.y + 1 }
93
94 #endif
时间: 2024-10-27 14:03:21

winconsio.h:一个用于在windows平台替代conio.h的自用库的相关文章

windows平台下和跨平台的相关公共库

以下主要包含windows下公共库以及跨平台公共库: 1. google base库:google下chromium项目的跨平台公共库: 2. vc_common_src:即HP_SOCKET项目中的公共库: 3. dlib:跨平台公共库,比较综合的各种库: 4. stlsoft:包含windows和linux下封装的工具库,如文件.资源.句柄.指针等:

Ubuntu使用Windows下的conio.h

把虚线框里面的内容粘贴进文档文本里面 ---------------------------------------------------------------------------------------------------------- #include <termios.h>#include <stdio.h> static struct termios old, new; /* Initialize new terminal i/o settings */void

Windows 平台VS2015 编译Opencv 引入扩展库opencv_conrtib

项目需要用到Opencv库,并且用到xfeature2d子模块.官网提供的可直接下载的库文件并不包含扩展模块,花了一个晚上编译出带扩展 模块版本,在此记录编译过程,以备后用.OpenCV版本:3.1.0 一.下载安装CMake 下载地址是https://cmake.org/download/ 如下图所示下载cmake-3.11.1-win64-x64.msi 图1 CMake下载示意图 下载Cmake(准确说应该是CMake Gui)默认安装即可,CMake GUI 安装完成后运行界面如下 图2

Windows平台内核级文件访问

1.背景     在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,读写文件.从kernel32的CreateFile/ReadFile/WriteFile函数,到本地系统服务,再到FileSystem及其FilterDriver,经历了很多层次.在每个层次上,都存在着安全防护软件,病毒或者后门作监视或者过滤的机会.作为安全产品开发者,我们需要比别人走得更远,因此我们需要一个底层的“windows平台内核级文件访问”的方法来确保我们能够看到正确的干净的文件系统. 2.

珍藏好料开源放送: windows平台一个高性能、通用型的C++生产者/消费者架构模板

/* 生产者/消费者通用模板 特点: 高性能:采用多线程,多队列平衡的信号量等待模型,有效减少锁等待 可调节:可以根据实际应用环境调整队列数,最多可支持64个队列 使用简单,一个构造函数,一个生产函数,一个消费函数. */ #ifndef PANDC_H #define PANDC_H #include <vector> #include <deque> #include <Windows.h> #include <limits.h> using names

windows平台上的一个内存池的实现

.h文件 /**********************说明************************* * 这是MPool内存池的实现,他具有如下特性: * 1. 池中的内存块是大小是相同的 * 2. 由宏定义_MP_NO_SERIALIZE决定是否需要多线程同步 * 3. 他利用windows的堆内存API进行内存分配 * 4. 他不能替换crt的malloc和free * 5. 他不是一个通用型的内存池 * 6. 适用于特定的应用环境(高频率的申请释放内存,如网络服务器),应用环境影

Tuleap ,一个用于软件项目管理的平台

Manuel Vacelet 是开发 Tuleap 项目的 Enalean 公司的联合创始人和 CTO,他说:"Tuleap 是一个完整用于托管软件项目的 GPLv2 平台,它提供了一个集中化的平台,在这里,团队可以找到他们所需的所有工具,追踪他们软件项目的生命周期.他们可以找到项目管理(Scrum.看板.瀑布.混合等等).源码控制(git 和 svn)和代码审查(pull 请求和 gerrit).持续集成.问题跟踪.wiki 和文档等的支持." 在这次采访中,我会和 Manuel 讨

Windows平台快速的创建一个指定大小的文件

有时,我们需要快速创建一个指定大小的文件,做系统测试使用,我们指定在Linux平台中可以使用如下命令: 创建一个100M的空文件 dd if=/dev/zero of=hello.txt bs=100M count=1 在windows平台同样可以使用下列命令快速创建一个指定大小的文件: fsutil file createnew <filename> <length> C:\>fsutil file createnew用法 : fsutil file createnew &

Facebook开源游戏平台ELF: 一个用于实时战略游戏研究的轻量级平台

ELF是一个用于游戏研究的应用广泛的(Extensive).轻量级的(Lightweight).灵活的(Flexible)平台,特别适用于实时战略(RTS)游戏.在C++方面,ELF采用C++线程来并发运行多个游戏.在Python方面,ELF可以一次性返回一批游戏状态,使其对现代RL(强化学习)非常友好.另一方面,在其他平台(例如OpenAI Gym)中,一个Python接口只能包含一个游戏实例.这使得游戏的并发运行有点复杂,而这又是许多现代强化学习算法的要求. 对于RTS游戏的研究,ELF配备