#include <WINDOWS.H>

#include <STDIO.H>

#include <STRING.H>

HANDLE hOut;

HANDLE hIn;

void ClearScreen(void);

void DispMousePos(COORD pos); // 在最后一行显示鼠标位置

void main()

{

hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄

hIn = GetStdHandle(STD_INPUT_HANDLE); // 获取标准输入设备句柄

WORD att = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY |

BACKGROUND_BLUE ;

// 背景是蓝色,文本颜色是黄色

SetConsoleTextAttribute(hOut, att);

ClearScreen(); // 清屏

INPUT_RECORD mouseRec;

DWORD state = 0, res;

COORD pos = {0, 0};

for(;;) // 循环

{

ReadConsoleInput(hIn, &mouseRec, 1, &res);

if (mouseRec.EventType == MOUSE_EVENT){

if (mouseRec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK) break;

// 双击鼠标退出循环

pos = mouseRec.Event.MouseEvent.dwMousePosition;

DispMousePos(pos);

if (mouseRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)

FillConsoleOutputCharacter(hOut, 'A', 1, pos, NULL);

}

}

pos.X = 0; pos.Y = 0;

SetConsoleCursorPosition(hOut, pos); // 设置光标位置

CloseHandle(hOut); // 关闭标准输出设备句柄

CloseHandle(hIn); // 关闭标准输入设备句柄

}

void DispMousePos(COORD pos) // 在最后一行显示鼠标位置

{

CONSOLE_SCREEN_BUFFER_INFO bInfo;

GetConsoleScreenBufferInfo( hOut, &bInfo );

COORD home = {0, bInfo.dwSize.Y-1};

WORD att0 = BACKGROUND_INTENSITY ;

FillConsoleOutputAttribute(hOut, att0, bInfo.dwSize.X, home, NULL);

FillConsoleOutputCharacter(hOut, ' ', bInfo.dwSize.X, home, NULL);

char s[20];

sprintf(s,"X = %2lu, Y = %2lu",pos.X, pos.Y);

SetConsoleTextAttribute(hOut, att0);

SetConsoleCursorPosition(hOut, home);

WriteConsole(hOut, s, strlen(s), NULL, NULL);

SetConsoleTextAttribute(hOut, bInfo.wAttributes); // 恢复原来的属性

SetConsoleCursorPosition(hOut, bInfo.dwCursorPosition); // 恢复原来的光标位置

}

void ClearScreen(void)

{

CONSOLE_SCREEN_BUFFER_INFO bInfo;

GetConsoleScreenBufferInfo( hOut, &bInfo );

COORD home = {0, 0};

unsigned long size = bInfo.dwSize.X * bInfo.dwSize.Y;

FillConsoleOutputAttribute(hOut, bInfo.wAttributes, size, home, NULL);

FillConsoleOutputCharacter(hOut, ' ', size, home, NULL);

}

linux控制台界面编程,控制台窗口界面的编程控制(二)相关推荐

  1. 终端 控制台 TTY shell 虚拟终端 图形界面终端

    综述 终端分为硬件和软件终端硬件终端早就不用了硬件终端分类为 VT100 xterm.都是硬件.软件终端是模拟的硬件终端,可以模拟 VT100 或者 xterm后来我们就把 VT100 xterm 叫 ...

  2. linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解

    首先: 1.终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两 ...

  3. 06 java GUI 网络编程:图形界面聊天室

    仿照第4篇笔记的形式,笔者决定将GUI和网络编程部分用综合练习的方式来总结.练习项目是有图形界面的聊天室,用到了GUI中的javax.swing包和网络编程中的TCP/socket编程.GUI部分的难 ...

  4. 视频教程-精通Win32 API编程-Windows图形界面编程-C/C++

    精通Win32 API编程-Windows图形界面编程 黄强老师,国家软件设计师,软件开发工程师,项目经理.产品经理.培训讲师. 创业合伙人,多年C.C++开发经验,尤擅长移动互联网项目的开发! 黄强 ...

  5. Linux下基于GTK人脸识别界面设计

    Linux下基于GTK人脸识别界面设计 1.人脸识别简介   人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸, ...

  6. Windows用户界面编程中的界面闪烁问题

    http://yyf9989.cnblogs.com/archive/2005/09/02/228320.html Windows用户界面编程中的界面闪烁问题 南京千里独行版权所有转载请保留本信息 在 ...

  7. GUI编程(图形界面编程)上

    GUI编程(图形界面编程)上 定义 图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令.调用文件.启动程序或执行其它一些日常任务.与通过键 ...

  8. 广播通信设计——WinSock编程(QT界面)

    广播通信设计 一.设计要求 设计要求是通过学习winSock API编程,实现局域网消息广播的应用程序. 系统采用CS架构的方式,具有服务端和客户端.完成的功能有私聊.群聊和私聊时的文件传输,私聊和文 ...

  9. 分享在winform下实现左右布局多窗口界面

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口 ...

  10. Linux 文本界面转到图形界面

    用root运行telinit   5        用vi修改/etc/inittab也可以.仔细看看注释,那是帮助.. 1.安装好后的第一步其登入默认是图形界面,如果刚装好后就进入了文本界面,可以是 ...

最新文章

  1. stm32双向可控硅调压程序_单向可控硅和双向可控硅的测量与模块测试
  2. 分布式架构的演进过程
  3. HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头
  4. C#之操作窗口模拟键鼠事件文件监控等知识使用
  5. spring 启动进度_在Web浏览器中显示Spring应用程序启动的进度
  6. 终结者:使用slf4j+log4j完美构建日志
  7. 初识SONiC,官方文档
  8. 带滤镜拍照的app_这8款拍照修图APP,简直就是逼格神器!
  9. Linux桌面系统远程访问全解析
  10. 基于RFID技术的智能交通解决方案
  11. 143个相见恨晚的排行榜网站,总有一个用得着!
  12. html 磁贴自动布局,也来“玩”Metro UI之磁贴(一)_html/css_WEB-ITnose
  13. Xcode 历史版本官方下载地址 Xcode6 Xcode7
  14. 思科 Packet Tracer 实验六 路由协议基本配置
  15. C++ 实现tring字符串trim函数和split函数
  16. VMware NAT 模式配置端口映射
  17. Excel软件的使用指南
  18. 一对一辅导价格表初中_初中一对一辅导价格多少
  19. 从原来的系统中找回网络连接
  20. 扫雷的一个简单实现 - C语言

热门文章

  1. C# 中的常用正则表达式总结
  2. wpf展开树节点_【转】WPF TreeView如何展开到某个节点
  3. 用神经网络分类陀螺和遥远星体
  4. 实验数据:将甲醛和亚硝酸的模拟分子网络分别计算100次的结果
  5. php cros跨域处理,php接口设置cors实现ajax跨域
  6. 【system generator】基于system generator的整数除法器设计
  7. 无记忆多项式数字预失真技术
  8. C++抽象基类和纯虚成员函数
  9. 信道容量与Shannon公式
  10. 拯救react的hooks:react的问题和hooks的作用