长按键盘只希望响应一次的问题MFC 基于对话框模式 5

这个程序主要是MFC弹钢琴,想让长按的时候只出一个音,因为现在长按是断断续续的,重复发送消息。由于ONKEYDOWN函数不可以在基于对话框模式下使用,所以转用lParam... 这个程序主要是MFC弹钢琴,想让长按的时候只出一个音,因为现在长按是断断续续的,重复发送消息。由于ONKEYDOWN函数不可以在基于对话框模式下使用,所以转用lParam来控制只响应一次消息,但是不知道怎么写进去,网上也没有详细的解释

int i=0;
BOOL CMelodyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class

if (pMsg->message==WM_KEYDOWN)
{

pMsg->lParam=1;//这个地方不知道该怎么编,就是希望之后的出声可以长按的时候只出一次声音
switch (pMsg->wParam )
{
case 'A':
{
t1=GetTickCount();//程序段开始前取得系统运行时间(ms)
// PlaySound((LPCTSTR)IDR_WAVE1, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
if(i==1)
{
mciSendString("close A",0,0,NULL);
i=0;
}
mciSendString("open D:\\A.wav alias A",0,0,NULL);
mciSendString("play A",0,0,0);
i=1;
break;
}
}
}
展开
 我来答
jellycgl
2015-09-15 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:889万
展开全部
做一个全局静态变量,初始值设置为false,在第一次按下的时候设置为True
在你的执行前(Case 'A'之后)加一个If判断,只有True的时候才响应按键,以后就可以通过控制全局变量控制按键是不是需要响了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式