C中从键盘获取字符&从鼠标捕获信息
程序员文章站
2022-04-07 19:16:55
...
一、键盘捕获信息:
获取按键:
char c;
if (_kbhit())
c = _getch()
二、鼠标捕获信息:
获取
MOUSEMSG m;
if (MouseHit())
m = GetMouseMsg();
鼠标信息的结构体:
struct MOUSEMSG
{
UINT uMsg; // 当前鼠标消息
bool mkCtrl; // Ctrl 键是否按下
bool mkShift; // Shift 键是否按下
bool mkLButton; // 鼠标左键是否按下
bool mkMButton; // 鼠标中键是否按下
bool mkRButton; // 鼠标右键是否按下
int x; // 当前鼠标 x 坐标
int y; // 当前鼠标 y 坐标
int wheel; // 鼠标滚轮滚动值
};
其中,“当前鼠标消息”可以是以下值:
- WM_MOUSEMOVE 鼠标移动消息
- WM_MOUSEWHEEL 鼠标滚轮拨动消息
- WM_LBUTTONDOWN 左键按下消息
- WM_LBUTTONUP 左键弹起消息
- WM_LBUTTONDBLCLK 左键双击消息
- WM_MBUTTONDOWN 中键按下消息
- WM_MBUTTONUP 中键弹起消息
- WM_MBUTTONDBLCLK 中键双击消息
- WM_RBUTTONDOWN 右键按下消息
- WM_RBUTTONUP 右键弹起消息
- WM_RBUTTONDBLCLK 右键双击消息
例如,判断获取的消息是否是鼠标左键按下,可以用:
if (m.uMsg == WM_LBUTTONDOWN)
...
示例代码:
程序运行释义:该程序会用红色的点标出鼠标移动的轨迹,按左键画一个小方块,按Ctrl+左键画一个大方块,按右键退出:
#include <graphics.h>
#include <conio.h>
int main()
{
// 初始化图形窗口
initgraph(640, 480);
MOUSEMSG m; // 定义鼠标消息
while (true)
{
// 获取一条鼠标消息
m = GetMouseMsg();
switch (m.uMsg)
{
case WM_MOUSEMOVE: // 鼠标移动的时候画红色的小点
putpixel(m.x, m.y, RED);
break;
case WM_LBUTTONDOWN: // 如果点左键的同时按下了 Ctrl 键
if (m.mkCtrl) // 画一个大方块
rectangle(m.x - 10, m.y - 10, m.x + 10, m.y + 10);
else // 画一个小方块
rectangle(m.x - 5, m.y - 5, m.x + 5, m.y + 5);
break;
case WM_RBUTTONUP:
return 0; // 按鼠标右键退出程序
}
}
// 关闭图形窗口
closegraph();
return 0;
}
运行结果:
上一篇: EasyX入门篇
下一篇: 这是一个类似魔塔的控制台c++小游戏