不知道如何键盘输入消息,(shift,alt之类的会了,就是不会ABCD)

0

不知道如何键盘输入消息,(shift,alt之类的会了,就是不会ABCD)

#include<graphics.h>
#include<conio.h>
#include<stdio.h>

int main()
{
	initgraph(640, 480,SHOWCONSOLE);

	int len=10 ;//图形缩放大小
	ExMessage m;//消息变量

	while (true)
	{
		m = getmessage(EM_MOUSE|EM_KEY);//获取鼠标或按键消息

		switch (m.message)
		{
		case WM_LBUTTONDOWN:
			if (m.shift)
			{
				fillrectangle(m.x, m.y, m.x + len, m.y + len);
				printf("(%d,%d) len:%d    %d\n", m.x, m.y,len, m.shift);
			}
			else
			{
				rectangle(m.x, m.y, m.x + len, m.y + len);
				printf("(%d,%d) len:%d    %d\n", m.x, m.y, len, m.shift);
			}
			break;
		case WM_RBUTTONDOWN:
			if (m.shift)
			{
				fillcircle(m.x, m.y, len - 5);
				printf("(%d,%d) len:%d    %d\n", m.x, m.y, len, m.shift);
			}
			else 
			{
				circle(m.x, m.y, len - 5);
				printf("(%d,%d) len:%d    %d\n", m.x, m.y, len, m.shift);
			}
			break;
		case WM_MBUTTONDOWN:			
			{
			clearcircle(m.x, m.y, 10);
			printf("(%d,%d) len:%d    %d\n", m.x, m.y, len, m.shift);
			}
			break;
		
		case WM_KEYDOWN://按键消息
			if (m.vkcode== VK_CONTROL)
			{
				len += 5;
				printf("len增长了!现在的值为:%d\n",len);
			}
			else if (m.vkcode==VK_MENU &&len>0)
			{
				len -= 5;
				printf("len减短了!现在的值为:%d\n", len);
			}
			else if (m.vkcode==VK_ESCAPE)//退出
			{
				return 0;
			}
		
			default:
			break;
		}



	}


	



	_getch();
	closegraph();
	return 0;
}
0

A、B、C、D 字符的虚拟键码和 ASCII 码相等。所以,你可以直接用:

if (m.vkcode== 'A')

判断按下的键是否是 A 键。

ava
慢羊羊

2022-7-30

0

获取 EM_CHAR 消息,再根据 m.ch 判断按键。见 EasyX Docs

ava
huidong

2022-7-29

技术讨论社区