首页 > 编程语言 >c++ 键盘/鼠标交互

c++ 键盘/鼠标交互

时间:2024-10-06 11:49:17浏览次数:1  
标签:DOWN NONAME 鼠标 VK c++ 键盘 KEY include MOUSE

c++ 键盘/鼠标交互

鼠标操作

点击

加上如下宏定义

#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define KEY_UP(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 0 : 1)

如果获取左键的点击,可以使用如下的代码:KEY_DOWN(MOUSE_MOVED)
如果获取滚轮的点击,可以使用如下的代码:KEY_DOWN(MOUSE_WHEELED)
如果获取右键的点击,可以使用如下的代码:KEY_DOWN(MOUSE_EVENT)

system

system("color XY"); 设置颜色为背景:X文字:Y
0 = 黑色       8 = 灰色
1 = 蓝色       9 = 淡蓝色
2 = 绿色       A = 淡绿色
3 = 浅绿色     B = 淡浅绿色
4 = 红色       C = 淡红色
5 = 紫色       D = 淡紫色
6 = 黄色       E = 淡黄色
7 = 白色       F = 亮白色

示例

#include<iostream>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define KEY_UP(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 0 : 1)
using namespace std;
int main() {
    while (1) {
		if (KEY_DOWN(MOUSE_MOVED)) {
			system("color 90");  //点击左键屏幕变成蓝色
		}
		else if (KEY_DOWN(MOUSE_WHEELED)) {
			system("color A0");  //点击左键屏幕变成绿色
		}
		else if (KEY_DOWN(MOUSE_EVENT)) {
			system("color 70");  //点击左键屏幕变成白色
		}
    }
    return 0;
}

输入输出

函数

#include<iostream> //头文件
cin // 输入
cout //输出
#include<conio.h> //头文件
getch() // 无痕读入
kbhit() // 检测是否有键按下

示例

#include<iostream>
#include<conio.h>
using namespace std;

int main() {
	while (1) {
        if (_kbhit()) {
            char ch = _getch();
            if (ch == 'a') cout << "a\n";
            else if (ch == 'd') cout << "d\n";
            else if (ch == 'w') cout << "w\n";
            else if (ch == 's') cout << "s\n";
        }
	}
    return 0;
}

标签:DOWN,NONAME,鼠标,VK,c++,键盘,KEY,include,MOUSE
From: https://www.cnblogs.com/pugong/p/18448958

相关文章

  • c++面经系列0:开篇-c++岗位面试都会问些什么?
    本文是C++岗位面试经验分享系列的开篇,敬请持续关注。在C++岗位面试中,通常首先进行技术面试,若通过则会进行HR面试。HR面试的内容先暂且略过,未来我们会有机会深入探讨,今天我们主要聚焦于技术面试的环节。技术面试通常由同岗位的同事或技术团队的领导担任面试官。在开场交流时,可以......
  • C++ 动态类型转换
    概念在C++中,dynamic_cast是一种运行时类型转换操作符。它主要用于在类的层次结构中进行安全的向下转换(将基类指针或引用转换为派生类指针或引用)。这种转换基于对象的实际类型进行检查,以确保转换的安全性。使用条件为了使用dynamic_cast,类层次结构中必须包含虚函数。这是因......
  • C++ 静态类型转换和动态类型转换的区别
    静态类型转换(static_cast)概念static_cast是C++中的一种类型转换操作符,用于在编译时进行类型转换。它主要用于具有明确的、编译器可以在编译阶段确定的类型转换关系的情况。这种转换通常在相关类型之间进行,例如基本数据类型之间的转换,或者在类层次结构中的向上转换(将派生类指......
  • C++ 重解释类型转换
    概念在C++中,reinterpret_cast被称为重新解释类型转换。它是一种强制类型转换操作符,用于将一种数据类型转换为另一种几乎完全不相关的数据类型。这种转换不进行任何数据的重新格式化或转换操作,只是简单地将数据的二进制表示重新解释为新的类型。语法语法形式为:reinterpret_......
  • C++ 常类型转换
    概念在C++中,常类型转换主要涉及到const_cast操作符,用于在特定情况下对const(常量)限定符进行处理。const关键字在C++中有重要意义,它表示被修饰的对象是常量,不能被修改。但在某些特殊情况下,需要在不破坏常量性语义的前提下,进行与常量相关的操作转换。const_cast的使用示例调......
  • C++ 类型强转
    static_cast基本概念static_cast主要用于在相关类型之间进行转换,这些类型之间存在某种隐式转换关系。它在编译时进行检查,是一种比较安全的类型转换方式。适用场景基本数据类型转换:例如将int转换为double,或者double转换为int(会截断小数部分)。intnumInt=5;doublenumD......
  • C++ 模板详解(一)
    C++模板模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;通常有两种形式:函数模板和类模板;函数模板针对仅参数类型不同的函......
  • c++之auto关键字的注意点(涉及decltype)
    1.基本规则auto会根据初始化表达式的类型推导出变量的类型。如果初始化的是值类型,auto推导出的也是值类型。如果初始化的是引用类型,auto会忽略引用类型,并推导出被引用对象的类型。如果初始化表达式是常量(const),且auto不是引用类型,推导出的类型会去掉const限定符。vo......
  • 欧拉筛解释(含C++代码)
    intprime[MAXN];//质数列表boolisPrime[MAXN];//标记是否为质数(0表示是,1表示不是)intcnt;//prime表长/*对于任意合数m,可写作m=p*k(p为m的最小质因子,k为m/p,m、k>1且为整数,k>p(p为最小质因子,k为其它几个质因子相乘,每个质因子都比p大,所以k>p))*///欧拉筛(使每个合数......
  • C++ 命名空间
    概念在C++中,命名空间(namespace)是一种将代码中的标识符(如变量名、函数名、类名等)进行分组和隔离的机制。它可以避免不同代码模块之间的命名冲突,提高代码的可维护性和可移植性。命名空间的定义基本语法为:namespace命名空间名称{//在这里定义变量、函数、类等}例......