MFC怎样处理键盘事件。想用mfc写个游戏,不知道怎样用键盘控制。

 我来答
microbaby233
2010-12-05 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:148万
展开全部

MFC有个OnKeyDown函数,具体有三个参数。

afx_msg void OnKeyDown(

   UINT nChar,

   UINT nRepCnt,

   UINT nFlags 

);

其中,第一个参数表示哪个按键。

nChar 

Specifies the virtual key code of the given key. For a list of of standard virtual key codes, see Winuser.h 

这些虚拟键值,有一些是系统常量,以VK_打头。比如Shift是VK_SHIFT(我不知道怎么区分左右),这些虚拟键值,可以在资源窗口中新建一个Accelerator,然后在右边双击,打开新建快捷键对话框,如图中红圈所示。

也可以直接使用无符号整数。

如果想知道具体哪个键对应哪个整数,可以专门写一个MFC程序,构造一个OnKeyDown函数,再使用一个控件输出nChar,就可以了。

其实我也是一知半解,希望对你能有所帮助。如果还有什么问题,可以发站内信,我一定知无不言。

参考资料是在线MSDN,可以看一看。

参考资料: http://msdn.microsoft.com/en-us/983st27a(VS.71).aspx

直男救星来了
2010-12-05 · TA获得超过673个赞
知道小有建树答主
回答量:168
采纳率:100%
帮助的人:202万
展开全部
要在MFC中处理键盘事件,你只需要做到两点就可以:
1、了解VC键值表,即键盘、鼠标每个按键对应的数值,这样,你才能在响应按键消息的函数中得知用户按下了哪一个键。
2、响应按键消息的函数。在VC中,我们可以在CDialog::PreTranslateMessage()函数中对用户的按键操作进行捕获,并进行相应的处理。
综合上面所讲,举一个简单的例子,应该就很清楚了。
首先新建一个基于对话框的MFC(.exe)应用程序,工程名为Game,然后在主对话框类CGameDlg上点右键,添加一个虚函数PreTranslateMessage。在BOOL CGameDlg::PreTranslateMessage(MSG* pMsg)函数中添加如下代码:
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
MessageBox("你按下了键盘上的回车键!");
然后编译运行,按键盘上的回车键,就会弹出提示对话框。
依次类推,你可以在这里捕获到任何关于键盘和鼠标的按键消息,并在这里做响应的处理。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在老君观喝啤酒的金鱼草
2010-12-05 · TA获得超过257个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:128万
展开全部
朋友,上面那几个朋友的方法都不错,我正在开发游戏这方面的,但上面的这两种方法在实际游戏项目中很少用的,原因就是响应按键不够灵敏,也就是说有延迟,如果你想真正做游戏,我可以给我发我一部分项目的源码,你看看我的源码里是如何地道的响应按键的。
你把你的邮箱留给我,我给你发过去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
功吉09B
2010-12-10 · TA获得超过106个赞
知道答主
回答量:74
采纳率:0%
帮助的人:63万
展开全部
不建议用MFC写游戏,些游戏的话还是直接创建win32工程比较好,那样无论是游戏的反应速度还是一些底层的变量都能很好的被把握,推荐楼主去看看C++游戏设计案例教程这本书
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
影子加油
2010-12-05 · 超过27用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:0
展开全部
你好,邮箱多少我可以给你发个贪吃蛇的小游戏,你可以参考一下!
这个程序里边有你想要的内容,而且是MFC游戏,邮箱多少,我可以给你发过去!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式