我在做一个飞机游戏,游戏同时响应多个消息,但我用keyDown来响应消息,代码如下:void CPlantGameView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handdler code here and/or call default
switch(nChar)
{
case VK_LEFT:
Drawplant(1);
break; case VK_RIGHT:
Drawplant(2);
break; case VK_UP:
Drawplant(3);
break; case VK_DOWN:
Drawplant(4);
break; case 68:
DrawFire(1);
SetTimer(1,10,NULL);
break;
} CView::OnKeyDown(nChar, nRepCnt, nFlags);
}Drawplant是画飞机的函数
DrawFire是画炸弹的函数我在试验图片的时候,无法响应两个消息。例如,我一直按着左键,在移动的时候按D键响应炸弹,炸弹飞出,响应了D的消息。但我左键一直没有放开,但飞机却无法移动。这是为什么?
是消息响应函数堵塞,还是MFC无法在处理一个消息后再处理另一个消息?
{
// TODO: Add your message handdler code here and/or call default
switch(nChar)
{
case VK_LEFT:
Drawplant(1);
break; case VK_RIGHT:
Drawplant(2);
break; case VK_UP:
Drawplant(3);
break; case VK_DOWN:
Drawplant(4);
break; case 68:
DrawFire(1);
SetTimer(1,10,NULL);
break;
} CView::OnKeyDown(nChar, nRepCnt, nFlags);
}Drawplant是画飞机的函数
DrawFire是画炸弹的函数我在试验图片的时候,无法响应两个消息。例如,我一直按着左键,在移动的时候按D键响应炸弹,炸弹飞出,响应了D的消息。但我左键一直没有放开,但飞机却无法移动。这是为什么?
是消息响应函数堵塞,还是MFC无法在处理一个消息后再处理另一个消息?
解决方案 »
- CreateDIBSection 与 CreateDIBitmap 的区别——详细探讨
- 求 桌面宠物 的具体设计流程.
- 能不能在一个TabCtrl上再放置一个TabCtrl,然后在第二个TabCtrl上再放置一个?
- 求教好的边缘增强方法
- 关于网络映射磁盘的问题!
- 如何变化这个字符串
- 我做了一个语音通信,但是,我每次把它放到后台运行时,语音质量就明显不好了,而当我把它激活后,语音又好了。这个问题怎么解决?
- 请问什么地方可以下载 Install Shield 5.1,急急急急!
- 小弟有一小段vc代码,请教哪位高手帮我翻译成vb代码,求救!!
- VC中利用SetWindowsHookEx钩子函数阻止弹出窗口如何实现?
- CSDN提醒广大计算机从业者,夏季电脑安全使用。善意提醒,敬请留意。
- 请教下,有些外挂模拟鼠标键盘输入的是怎么做到的后台模式运行?
我认为实现长按的功能的话,是不是用定时器来实现呀,当OnKeyDown的为Left的时候set timer,当OnKeyUp为Left的时候kill timer,然后在OnTimer里面实现长按的效果,你的里面就是实现你移动的功能。D键还是在OnKeyDown里面实现。
你用什么做的游戏
如果是DirectX可以考虑用DirectInput实现
如果Drawplant比较快的话,你的定时器设的时间看看有没有问题,如果定时器的时间设得太长的话,也会有卡的问题。